我想将所有非.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
为什么会这样?
答案 0 :(得分:1)
看起来您在每个目录的上下文(RewriteRule
或.htaccess
)中使用了<Directory>
。 in this case,
[...]每个目录前缀(在您的情况下为
/home/user/public_html
)会自动删除RewriteRule
模式匹配,并在任何相对之后自动添加(不是以斜杠或协议名称开头) )替换遇到规则集的结尾。
要避免这种情况,请使用RewriteBase
,如下所示:
RewriteBase /
还要注意每个目录重写的其他additional complexity items。