0

我的站点 (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:好

但随后它会生成一个错误:错误 310 (net::ERR_TOO_MANY_REDIRECTS)

有什么线索吗?

4

2 回答 2

1

当您使用88.88.88.88/reboot时,您的 HTTP_HOST 仍然等于88.88.88.88

尝试根据 REQUEST_URI 添加 RewriteCond 规则,这会将所有不属于的内容重定向/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]
于 2012-08-22T09:19:21.013 回答
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]

(保持其余规则不变)。

于 2012-08-22T09:21:33.657 回答