为什么modrewrite使用我网站的完整路径?

时间:2011-03-17 04:55:09

标签: apache .htaccess

我想将所有非.html链接重定向到html链接,例如domain.com/hey到domain.com/hey.html,所以我使用了以下规则

RewriteCond %{REQUEST_URI} !^\.html$
RewriteRule ^([a-zA-Z\+]+)$ $1\.html [R=301,L,NE]

然而,重定向的发生方式如下:

http://domain.com/what+there - > http://domain.com/home/user/public_html/what+there.html

为什么会这样?

1 个答案:

答案 0 :(得分:1)

看起来您在每个目录的上下文(RewriteRule.htaccess)中使用了<Directory>in this case

  

[...]每个目录前缀(在您的情况下为/home/user/public_html)会自动删除RewriteRule模式匹配,并在任何相对之后自动添加(不是以斜杠或协议名称开头) )替换遇到规则集的结尾。

要避免这种情况,请使用RewriteBase,如下所示:

RewriteBase   /

还要注意每个目录重写的其他additional complexity items