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]
Другие вопросы по тегам