Pab*_*blo 5 redirect virtualhost apache-2.2
我希望当人们使用 IP 地址访问我的 Web 服务器时,例如http://10.0.0.1,被重定向到域名,例如http://example.com. 我正在使用 Apache Web Server,并且尝试过:
<VirtualHost 10.0.0.1:80>
Redirect / http://example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
它生成了一个无限重定向循环,因为它的优先级高于
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这是我最终想要服务的虚拟主机。
我也试过
<VirtualHost 10.0.0.1:80>
ServerName 10.0.0.1
Redirect / http://example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
认为也许它只会匹配http://10.0.0.1但不会匹配http://example.com。但它也会产生无限循环。任何想法如何实现这一目标?
IP虚拟主机之所以不是主要且唯一的虚拟主机,是因为我希望服务器上的其他IP也能够服务example.com。
小智 6
HD 回答给出了一个很好的重写规则,但你应该在此之前放一个条件。确保只有一个虚拟主机在 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>
Run Code Online (Sandbox Code Playgroud)
这样,您只需要一个虚拟主机作为该 IP 地址,而不是您在上面尝试执行的操作。注意:如果您要在此服务器上拥有多个虚拟主机,则需要将其余虚拟主机放在不同的 IP 上
我尝试相同的配置,效果很好。您确定没有其他定义与您的虚拟主机冲突吗?apache 日志中的错误是什么?
这个规则也有效:
RewriteRule ^(.*)$ http://example.com/$1 [R=301,NC]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23340 次 |
| 最近记录: |