Задать вопрос
@Amoled

Почему не работает редирект на 404 в.htaccess?

Требуется делать rewrite на /404 для всех несуществующих файлов/папок на сервере, кроме статики (css, js и т.п.). Пробовал уже десятки вариантов, оно не работает как не крути. Первые 10 страниц выдачи гугла по проблеме уже наизусть запомнил. Например:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(css¦jpg¦gif¦zip¦js)
RewriteRule . /404 [L]


Если попробовать сделать наоборот, чтобы только несуществующие файлы/папки с определенным расширением отправлялись на /404, то все работает
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.(xml|txt)$
RewriteRule . /404 [L]

Стоит добавить ! и никакого обратного эффекта от ! не получается, как это предполагалось, Вообще это правило будто пропадает с !.

Все равно делается реврайт на 404 для запросов с .css и т.п. на конце, хотя явно написано его не делать.
  • Вопрос задан
  • 6133 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@IceJOKER
Web/Android developer
Не проще - ErrorDocument 404 /404 ?
Ответ написан
zooks
@zooks
Frontend
¦ - это что за символ. Также нужно указать, что с вашим конфигом это не будет нормальной ошибкой 404, а лишь выдаст страничку с таким названием.

Как перенаправить Apache раньше чем он объявит 404 ошибку?
Ответ написан
Комментировать
@Kurskov
А сердечник мы возьмем деревянненький
Несуществующая статика (css¦jpg¦gif¦zip¦js) на редирект уводить не должна?

Если должна, то, как сказал IceJOKER, ErrorDocument 404 /404, только до RewriteEngine on.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы