1

我想将我的网站从 www 重定向到非 www,但没有“主页”。

例如。www.domain.com 或 www.domain.com/ 什么都不做,但 www.domain.com/everything-else 应该重定向到 domain.com/everything-else

为什么下面的代码也重定向“主页”?

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteCond %{REQUEST_URI} !^$
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]
4

3 回答 3

1

也许是因为您还允许通过^(.*)$RewriteRule.

尝试这个:

RewriteRule ^(.+)$ http://%1/$1 [R=301,NC,L]

.*接受任何字符零次或多次,而.+接受任何字符一次或多次。

于 2012-08-06T13:34:03.257 回答
0

关于这一点;http://localhost/ (index.php says $_SERVER['REQUEST_URI'] is /)

我认为,即使显示站点的根目录“REQUEST_URI”也不能为空,它应该是“/”。所以也许你应该尝试这样的事情;

重写引擎开启

RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/$
重写规则 ^(.+)$ http://domain.com/$1 [R=301,L]
于 2012-08-06T13:46:12.660 回答
0

那不工作吗?

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteCond %{REQUEST_URI} !^\/?$
RewriteRule ^(.*)$ http://%1/$1 [R=307,NC,L]
于 2012-08-06T13:50:15.690 回答