我想阻止Apache响应
http://machineName.
我更喜欢它回应(或redirect?)
http://machineName.something.com
就我而言,
http://intra-beta
应该要么repond或redirect到
http://intra-beta.domain.ca
这与useCanonicalName有关吗?
这是我的httpd.conf的一个片段
... ServerName xxx.xxx.xxx.xxx:80 NameVirtualHost *:80 ... UseCanonicalName Off ... <VirtualHost *:80> ServerName intra-beta.domain.ca DocumentRoot "E:/web/intra/htdocs" ServerAdmin [email protected] ... </VirtualHost> <VirtualHost *:80> ServerName intra.otherDomainFr.ca DocumentRoot "E:/web/intra/htdocs" ServerAdmin [email protected] ... </VirtualHost> <VirtualHost *:80> ServerName intra.otherDomainEn.ca DocumentRoot "E:/web/intra/htdocs" ServerAdmin [email protected] ... </VirtualHost>
编辑#1
这似乎工作到目前为止…
RedirectMatch (.*) intra-beta.domain.ca$1
编辑#2
这样的情况如何:
<VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "E:/web/inter-ssl/htdocs" ServerName inter-dev.domain.ca:443 ServerAdmin [email protected] ... </VirtualHost>
如果我做了修改,看起来像这样:
<VirtualHost *:443> ServerName inter-dev RedirectMatch (.*) inter-dev.domain.ca$1 </VirtualHost> <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "E:/web/inter-ssl/htdocs" ServerName inter-dev.domain.ca:443 ServerAdmin [email protected] ... </VirtualHost>
我收到了一个与redirect太多有关的错误。 如果我理解正确,SSL的工作方式不同,在这种情况下,此修复可能不是一个正确的实施?
你需要明确地configuration你的redirect:
<VirtualHost *:80> ServerName intra-beta RedirectMatch /.* http://intra-beta.domain.ca </VirtualHost>
在你的情况下,每个请求的Host:头不匹配任何configuration的ServerNames将由IP地址匹配的第一个VirtualHost回答。 因此,如果将上述新的VirtualHost放在configuration文件中的第一个位置,那么所有Host:头不同于intra-beta.domain.ca , intra.otherDomainFr.ca或intra.otherDomainEn.ca将被redirect到http://intra-beta.domain.ca 。
在/ etc / hosts中你有一个入口
127.0.0.1 machine machine.domain.com
或者您已经将dnsconfiguration为为每个主机名假定本地域,并且每次主机名处于DNS查询时,它都尝试使用此本地域parsing主机名。