为什么Apache会响应http:// machineName

我想阻止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.caintra.otherDomainFr.caintra.otherDomainEn.ca将被redirect到http://intra-beta.domain.ca

在/ etc / hosts中你有一个入口

 127.0.0.1 machine machine.domain.com 

或者您已经将dnsconfiguration为为每个主机名假定本地域,并且每次主机名处于DNS查询时,它都尝试使用此本地域parsing主机名。