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

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

我想阻止 Apache 响应

http://machineName. 

我希望它响应(或重定向?)到

http://machineName.something.com

就我而言,

http://intra-beta 

应该回复或重定向至

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>

我收到与重定向次数过多相关的错误。如果我理解正确的话,SSL 的工作方式会有所不同,并且此修复在这种情况下可能不是正确的实现?

答案1

您需要明确配置您的重定向:

<VirtualHost *:80>
  ServerName intra-beta
  RedirectMatch /.* http://intra-beta.domain.ca
</VirtualHost>

在您的例子中,Host:标头与任何配置都不匹配的每个请求都ServerNames将由第一个 IP 地址匹配的请求应答VirtualHost。因此,如果您将上述新内容放在配置文件的第一个位置,则标头不同于或的VirtualHost所有请求都将被重定向到。Host:intra-beta.domain.caintra.otherDomainFr.caintra.otherDomainEn.cahttp://intra-beta.domain.ca

答案2

在 /etc/hosts 中你有一个条目

127.0.0.1   machine   machine.domain.com

或者您已将 DNS 配置为为每个主机名假定本地域,并且每次主机名在 DNS 查询中时,它都会尝试使用此本地域来解析主机名。

相关内容