#apache #.htaccess #apache2.4
Вопрос:
У меня есть htaccess, который позволит переписать некоторые URL-адреса в определенных ситуациях.
RewriteEngine On
RewriteRule .php$ - [L,NC]
RewriteRule ^(?:favicon.ico|(?:index|custom500|custom404).html)$ - [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php?source=$0 [L,QSA]
Внутри у меня есть правило, которое запрещает index.html, custom404.html, custom500.php и фавикон.ico будет включено в переписывание.
Теперь я пытаюсь добавить ту же логику для любого файла, который заканчивается расширением pdf или jpg.
Поэтому я попытался добавить расширение pdf в список исключений
RewriteRule ^(?:favicon.ico|(?:index|custom500|custom404).html|?:*.pdf)$ - [L,NC]
но apache в любом случае будет обслуживать этот файл как index.php?source=myfile.pdf
Как я могу правильно добавить .pdf и .jpg в этот список?
Комментарии:
1.
|?
в этом месте синтаксически нет смысла, потому что знак вопроса там будет считаться квантором.2. Если вы вообще не хотите переписывать файлы PDF — тогда почему бы просто не добавить
RewriteRule .php$ - [L,NC]
их соответствующим образом? Я3. @cbroe как бы ты это сформулировал? и что еще более важно, почему ? правильно ли работает для двух других регулярных выражений в этом правиле?
4. Потому что в этих двух других местах
?
он не стоит сам по себе, а является частью синтаксиса «группы без захвата».,(?:
5.
RewriteRule .php|.pdf$ - [L,NC]
, и сделано — нет? (ИлиRewriteRule .p(hp|df)$ - [L,NC]
, если кто-то действительно захочет считать это улучшением.)