我有一个在Ubuntu服务器上运行的Apache(14.04)。 我configuration了DNS Alogging和VH,以便拥有一个域和两个子域,就像这样:
- example.com
- subdomain1.example.com
- subdomain2.example.com
一切运行正常,但问题是,当我尝试通过服务器IP访问我的网站时,浏览器显示subdomain1.example.com内容而不是example.com内容。 如果我inputexample.com,就不会发生这种情况,在这种情况下,一切都会好起来的,但是我担心如果这可能会成为未来的问题,或者我做了错误的事情…
这里是我的Apache VHconfigurationexample.com和subdomain1.example.com(subdomain2是完全像subdomain1):
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <VirtualHost *:80> ServerName subdomain1.example.com ServerAdmin [email protected] DocumentRoot /var/www/subdomain1 ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
希望我已经解释清楚了…谢谢!
从Apache文档
当收到请求时,服务器首先将其映射到基于本地IP地址和端口组合的最佳匹配。 非通配符具有更高的优先级。 如果根本不存在基于IP和端口的匹配,则使用“主”服务器configuration。
如果多个虚拟主机包含最匹配的IP地址和端口,则服务器将根据请求的主机名从这些虚拟主机中select最佳匹配。 如果找不到匹配的基于名称的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机。 因此,给定IP地址和端口组合的第一个列出的虚拟主机是该IP和端口组合的默认虚拟主机。
这个基本的意思是在httpd.conf遇到的第一个VirtualHost将被用作默认值,或者如果所有的虚拟主机都在独立的(包含的) .conf文件中(这可能是你的情况),那么按字母顺序排列的第一个.conf文件用过的。
TLDR:尝试将包含example.com虚拟主机的.conf文件重命名为aaa.conf (并重新启动httpd)