.htaccess简单重定向和重定向太多:如何解决?

时间:2012-08-22 09:07:06

标签: .htaccess

我的网站(domain.com)现在位于/ var / www / 您也可以通过IP直接访问它:88.88.88.88

我想获得: 当用户输入IP:88.88.88.88时,重定向到88.88.88.88/reboot /

如果用户输入完整的域名,它会像现在一样显示该网站。

我试过.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} 88.88.88.88
RewriteRule .* http://88.88.88.88/reboot/ [R=301,L]
RewriteCond %{HTTP_HOST} ^mysite.com
RewriteRule .* http://www.mysite.com [R=301,L]

效果不佳

www.mysite.com:好的

mysite.com:好的

88.88.88.88 - >重定向到88.88.88.88/reboot:GOOD

但它会生成错误:错误310(net :: ERR_TOO_MANY_REDIRECTS)

有任何线索吗?

2 个答案:

答案 0 :(得分:1)

当你在 88.88.88.88/reboot 时,你的HTTP_HOST仍然等于 88.88.88.88

尝试添加RewriteCond规则,具体取决于REQUEST_URI,它会将非/reboot的所有内容重定向到/reboot

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} 88.88.88.88
RewriteCond %{REQUEST_URI} !^/reboot/
RewriteRule ^(.*)$ http://88.88.88.88/reboot/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^mysite.com
RewriteRule .* http://www.mysite.com [R=301,L]

答案 1 :(得分:0)

ERR_TOO_MANY_REDIRECTS来了,因为你的规则循环了。 每当请求发送到主机88.88.88.88时,您将其重定向到88.88.88.88/reboot/,但/ reboot / uri也在该主机上,因此它会重定向并循环。

如果您只想在主机88.88.88.88上重定向/到/ reboot /,则需要将RewriteRule更改为:

RewriteCond %{HTTP_HOST} 88.88.88.88
RewriteRule ^/$ http://88.88.88.88/reboot/ [R=301,L]

但是,如果您希望重定向/ reboot /之外的所有内容,则需要添加条件(RewriteCond):

RewriteCond %{HTTP_HOST} 88.88.88.88
RewriteCond %{REQUEST_URI} !^/reboot/
RewriteRule ^/$ http://88.88.88.88/reboot/ [R=301,L]

(保持其余规则不变)。