我的迪莱玛:
在.htaccess中我的网站的根目录:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]在.htaccess中的子目录/foo中
RewriteEngine On
RewriteRule ^page1\.html$ /foo/page2.html [R=301]首先,我试图确保所有的请求都包括开始的www。在第二个文件中,我将foo子目录中对page1.html的请求重定向到page2.html,也是在该子目录中。
在我的浏览器中,试图访问:
http://www.example.com/foo/page2.html <==工作,很好
http://www.example.com/foo/page1.html <==重定向到http://www.example.com/foo/page2.html,很好
http://example.com/foo/page1.html <==重定向到http://www.example.com/foo/page2.html,很好
http://example.com/foo/page2.html <==无重定向发生,坏
==>应该重定向到:example.com/foo/page2.html
通过实验,网站根目录中的.htaccess文件中的重定向规则似乎只对该子目录中的页面的请求生效,如果该子目录中的不包含.htaccess文件,或者它确实包含并指定了对此特定请求生效的重写规则。
,有人能看到我做错了什么吗?,我怎么能得到坚持www的重写规则。如果它丢失了为http://example.com/foo/page2.html开火
谢谢你跳,成功了!
为了记录在案,我不得不将站点根目录中文件中的重写规则更改为:
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]这很好。谢谢!
发布于 2008-12-04 00:51:39
发布于 2008-12-03 23:58:35
我不知道为什么/.htaccess中的规则不适用于/foo/.htaccess。通常,.htaccess文件将继承目录结构上的规则,这会导致各种奇怪的事情。但是,对于特定的解决方案,只需将所有相关规则放在父.htaccess文件中:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteRule ^foo/page1\.html$ /foo/page2.html [R=301]https://stackoverflow.com/questions/338981
复制相似问题