mod_rewrite不从非远程文件重定向

时间:2014-06-04 17:02:50

标签: apache .htaccess mod-rewrite redirect http-status-code-404

我遇到了使用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代码失败而原始页面仍然存在?

1 个答案:

答案 0 :(得分:0)

让你的.htaccess像这样:

ErrorDocument 404 default

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?example\.org$ [NC]
RewriteRule ^calendar\.html$ /blog/calendar/ [R=301,L]