mod_rewrite не перенаправляет с несуществующих файлов
У меня проблемы с перенаправлением страниц с помощью mod_rewrite. Перенаправления работают только до тех пор, пока оригинальная страница остается на сервере. Как только я удаляю страницу, попытки доступа к URL приводят к 404 вместо 301 перенаправления.
RewriteCond %{HTTP_HOST} ^example\.org$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.org$
RewriteRule ^calendar\.html$ "http\:\/\/www\.example\.org\/blog\/calendar\/" [R=301,L]
Опять же, пока calendar.html остается в корневом каталоге, посетители правильно перенаправляются на blog/calendar, но как только я удаляю calendar.html, посетителям, пытающимся получить к нему доступ, показывается страница 404.
Перенаправления через mod_alias работают правильно в любом случае,Redirect 301 /calendar.html http://www.example.org/blog/calendar/
но мне нужно будет манипулировать строками запроса в будущем и поэтому я должен иметь возможность использовать mod_rewrite.
Кто-нибудь знает, почему код mod_rewrite терпит неудачу при отсутствии оригинальной страницы?
1 ответ
Получите ваш.htaccess вот так:
ErrorDocument 404 default
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.org$ [NC]
RewriteRule ^calendar\.html$ /blog/calendar/ [R=301,L]