http301从非www重定向到www不再工作

时间:2014-12-19 18:40:31

标签: apache .htaccess mod-rewrite redirect

我多年来一直在使用此代码。然而,就像文件夹一样,它在几天前就停止了工作。

RewriteEngine on

#convert everything to www
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

所以,把它包起来:

http://foo.com/blah.php - > http://www.foo.com/blah.php

HOWEVER http://foo.com/bar/ - > http://www.foo.com而非http://www.foo.com/bar/

我正在使用http://www.redirect-checker.org/index.php彻底检查发生了什么,我看到的只是正常的http301重定向。我唯一注意到的是它是一个错误的重定向。

我试图删除.htaccess中的所有内容,但上面粘贴的代码行,但结果是一样的。

我的(共享计划)托管公司是否改变了Apache的内部配置?

提前致谢

1 个答案:

答案 0 :(得分:1)

问题是,通过在每个子目录中使用Inherit,此www添加规则仅相对于该子目录设置$1。请在父.htaccess

中使用此规则
RewriteEngine on

#convert everything to www
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]