
[英]Invisibly rewriting root to subdirectory using mod_rewrite (ajaxplorer)
[英]Using mod_rewrite in .htaccess in both website root and a subdirectory
我的困境:
在我网站根目录的.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 <==没有重定向发生,不好
==>应该重定向到:http://**www.**example.com/foo/page2.html
通过实验,似乎重定向规则在请求网站的根才生效.htaccess文件在该子目录页, 如果该子目录不包含.htaccess文件,或者它并指定一个重写规则确实需要对于此特定请求的效果。
谁能看到我在做什么错? 如何获得粘贴www的重写规则。 如果缺少http://example.com/foo/page2.html会触发?
谢谢你,那行得通!
作为记录,然后我不得不将站点根目录中文件的重写规则更改为:
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]
很好 谢谢!
我不确定/.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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.