我想阻止 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.ca
intra.otherDomainFr.ca
intra.otherDomainEn.ca
http://intra-beta.domain.ca
答案2
在 /etc/hosts 中你有一个条目
127.0.0.1 machine machine.domain.com
或者您已将 DNS 配置为为每个主机名假定本地域,并且每次主机名在 DNS 查询中时,它都会尝试使用此本地域来解析主机名。