使用Apache将IP地址redirect到实名

我希望当人们访问我的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]