我整天都在为此苦苦挣扎,在这里也没有找到答案。请建议如何设置我需要的正确子域。
我的 Apache 配置已配置 2 个域(在同一个 IP 上),对于 domain2.com,我需要设置一个子域。这是我目前所拥有的,但子域一直将我重定向到 domain2.com(主站点)。
<VirtualHost 11.11.11.11:80>
ServerName domain1.com
ServerAlias domain1.com *.domain1.com
DocumentRoot "C:/wwwmap/domain1.com"
</VirtualHost>
<VirtualHost 11.11.11.11:80>
ServerName domain2.com
ServerAlias domain2.com *.domain2.com
DocumentRoot "C:/wwwmap/domain2.com"
</VirtualHost>
<VirtualHost 46.4.24.4:80>
ServerName projects.domain2.com
DocumentRoot "C:/wwwmap/projects"
</VirtualHost>
DNS 条目为:projects in CNAME domain2.com
尝试删除 ServerAlias domain2.com *.domain2.com 到目前为止有效,但随后 domain2.com 重定向到 domain1.com
我究竟做错了什么?
答案1
你应该使用这样的东西:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName domain1.com
ServerAlias domain1.com *.domain1.com
DocumentRoot "C:/wwwmap/domain1.com"
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com
ServerAlias domain2.com *.domain2.com
DocumentRoot "C:/wwwmap/domain2.com"
</VirtualHost>
使用这种设置,浏览器发送的 Host: 标头就足以区分不同的条目。您可以使用除“*:80”之外的其他内容,但这是一个基本配置,绝对应该工作。
答案2
必须在使用通配符捕获域的 vhost 之前定义 projects.domain2.com vhost,然后它才能工作。
<VirtualHost 11.11.11.11:80>
ServerName domain1.com
ServerAlias *.domain1.com
DocumentRoot "C:/wwwmap/domain1.com"
</VirtualHost>
<VirtualHost 11.11.11.11:80>
ServerName projects.domain2.com
DocumentRoot "C:/wwwmap/projects"
</VirtualHost>
<VirtualHost 11.11.11.11:80>
ServerName domain2.com
ServerAlias *.domain2.com
DocumentRoot "C:/wwwmap/domain2.com"
</VirtualHost>
答案3
如果您之前曾从一个域名重定向到另一个域名,则您的浏览器中可能仍缓存着该重定向。请尝试清除缓存。