我遇到了使用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保留在根目录中,访问者就会被正确地重定向到博客/日历,但只要我删除calendar.html,尝试访问它的访问者就会显示为404页。
在任何一种情况下,通过mod_alias重定向都能正常工作,
Redirect 301 /calendar.html http://www.example.org/blog/calendar/
但是我将需要操作查询字符串,因此需要能够使用mod_rewrite。
有没有人知道为什么mod_rewrite代码失败而原始页面仍然存在?
答案 0 :(得分:0)
让你的.htaccess像这样:
ErrorDocument 404 default
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.org$ [NC]
RewriteRule ^calendar\.html$ /blog/calendar/ [R=301,L]