所以这是我的情况:
我有1个静态IP和2个服务器。 1台服务器是一台Web服务器,另一台是邮件服务器。 我有一个路由器作为一个硬件防火墙,所有的端口设置,需要通过内部IP地址。
如果用户inputurlhttp://www.domain.com,他们会看到该网站。 如果用户想要访问networking邮件,他们键入urlhttp://mail.domain.com,但仍然可以看到http://www.domain.com
我已经设置webmail域可通过邮件服务器上的端口8080访问,如果用户键入url http://mail.domain.com:8080它没有任何问题,但与http://mail.domain.com 。
所以这是我的问题:
在我的httpd.conf我想设置一个redirect301,以便当用户键入http://mail.domain.com他们被redirect到http://mail.domain.com:8080
我宁愿不要使用.htaccess,并保持httpd.conf中的指令
谢谢…
您需要在主Web服务器上创build一个虚拟主机,以响应“mail.domain.com”地址的Web请求。 查看Apache网站上的基于名称的虚拟主机文档。 你还需要一个mod_rewrite规则来做redirect。 你的configuration看起来像这样:
NameVirtualHost *:80 <VirtualHost *:80> ServerName mail.domain.com RewriteEngine On RewriteRule (.*) http://mail.domain.com:8080/\1 [R=301,L] </VirtualHost>
至less有两种方法可以做到这一点:
为www.domain.com创build一个虚拟主机 ,为mail.domain.com创build一个虚拟主机 ,然后在第二个虚拟主机中添加 RedirectMatch指令。
您也可以使用mail.domain.com虚拟主机中的ProxyPass指令使其像反向代理一样工作,并且可以直接使用mail.domaine.com:80工作,而无需redirect
像这样使用mod_rewrite只能用这样的规则redirectmail.domain.comurl
RewriteCond%{HTTP_HOST} ^ mail.domain.com $ [NC]
RewriteRule ^(。*) http://mail.domain.com:8080/ $ 1 [R = 301]
与mod_rewrite你也可以做一个规则反向代理(mail.domain.com应parsing为内部IP)
RewriteCond%{HTTP_HOST} ^ mail.domain.com $ [NC]
RewriteRule ^(。*) http://mail.domain.com:8080/ $ 1 [P]