Fesor
@Fesor
Full-stack developer (Symfony, Angular)

htaccess: почему может не отрабатывать правило?

Есть сайт с одной точкой входа. Стоит правило в htaccess при котором все запросы на несуществующие файлы перенаправляются на index.php. Да бы не засорять ошибочными запросами на статику логи, захотелось запретить это дело. Написал правило.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} \.(gif|jpg|png|ico|css|js|swf|wav|mp3|less|cur)$ [NC]
RewriteRule .* - [L,R=404]


На локальном сервере все работает, на боевом же это правило игнорируется. Если вместо 404-ой ошибки поставить 301 редирект то все работает, то есть правило составлено верно (я не уверен на 100%). После этого правила есть только это:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php [L]


Сервер стоит на apache 2.2.24. Я не очень часто работаю с apache, так что вынужден обратиться за советом.
  • Вопрос задан
  • 3400 просмотров
Пригласить эксперта
Ответы на вопрос 3
Правила htaccess для статики могут игнорироваться, если статику отдает nginx
Ответ написан
parmactep
@parmactep
Попоробуйте таким образом:
RewriteRule .* - [L,G]
А вот вам шпаргалка на всякий случай шпаргалка по mod_rewrite
Ответ написан
truekenny
@truekenny
На третьей строке уже точно не файл, поэтому надо проверять %{THE_REQUEST}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы