我希望当人们访问我的networking服务器的IP地址,如http://10.0.0.1 ,被redirect到域名,如http://example.com 。 我正在使用Apache Web服务器,我试过了:
<VirtualHost 10.0.0.1:80> Redirect / http://example.com </VirtualHost>
它产生了一个无限recursion,因为它的优先级比
<VirtualHost *:80> ServerName example.com ... </VirtualHost>
这是我最终想要服务的虚拟主机。
我也试过了
<VirtualHost 10.0.0.1:80> ServerName 10.0.0.1 Redirect / http://example.com </VirtualHost>
认为也许它只会匹配http://10.0.0.1而不是http://example.com 。 但是它也会产生一个无限循环。 任何想法如何实现?
IP虚拟主机不是主要的,唯一的虚拟主机的原因是因为我想服务器上的其他IP也能够服务器example.com。
房屋署回答了一个很好的重写规则,但你应该在此之前提出一个条件。 确保在10.10.10.1上只有一个虚拟主机运行,并且你的定义如下所示:
<VirtualHost 10.0.0.1:80> ServerName servername.com ..... RewriteCond %{SERVER_NAME} 10.10.10.1 RewriteRule /(.*) http://servername.com/$1 [R=301,L] </VirtualHost>
这样,你只需要一个虚拟主机的IP地址,而不是你想要做的上面。 注意:如果您要在此服务器上安装多个虚拟主机,则需要将其他虚拟主机放在不同的IP上,
我尝试相同的configuration,它工作正常。 你确定没有其他定义与你的虚拟主机冲突吗? 什么是在Apache日志中的错误?
这条规则也适用:
RewriteRule ^(.*)$ http://example.com/$1 [R=301,NC]
在.htaccess中
加
RewriteCond %{HTTP_HOST} ^123.123.123.123 RewriteRule (.*) http://www.example.com/ $1 [R=301,L]