我的网站(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)
有任何线索吗?
答案 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]
(保持其余规则不变)。