我正在生产服务器上就地建立一个小型网站。在完成最终域名的所有设置时,我们将其定位在 dev.domain.com 上,这样我们的访问者在访问 www.domain.com 或 domain.com 时就不会看到可能有错误的网站。我通过指定一个虚拟主机来捕获 dev.domain.com 以及“真实”网站的 documentroot,然后创建一个新网站,该虚拟主机捕获 www.domain.com 和 domain.com,documentroot 指向与“真实”网站平行的目录,只包含 index.html。此网站将向访问者显示有关网站重建的消息。
这些是站点配置文件:
# dev.domain.com
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName dev.domain.com
DirectoryIndex index.html
DocumentRoot /var/www/www.domain.com/htdocs/
ScriptAlias /cgi-bin/ /var/www/www.domain.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
ErrorLog /var/log/apache2/www.domain.com/error.log
CustomLog /var/log/apache2/www.domain.com/access.log combined
</VirtualHost>
# a-notice-site
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.domain.com
ServerAlias domain.com
DirectoryIndex index.html
DocumentRoot /var/www/notice-site/htdocs/
ScriptAlias /cgi-bin/ /var/www/www.domain.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
ErrorLog /var/log/apache2/www.domain.com/error.log
CustomLog /var/log/apache2/www.domain.com/access.log combined
</VirtualHost>
所以我的问题是:输入 www.domain.com、www.domain.com. 甚至 domain.com. 时,我都能顺利访问通知网站,但仅访问 domain.com(不带结尾的点)时,浏览器地址栏会提示我已被路由到 www.domain.com/notice-site/htdocs,并出现 404 错误,表示未找到 URL。访问开发网站时一切正常。
我有点预感这与我设置虚拟主机的方式有关,但遗憾的是我不知道为什么会导致这种影响。有没有人听说过类似的事情或是什么原因造成的?
apache2ctl -S 给出:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server www.domain.com (/etc/apache2/sites-enabled/a-notice-site:4)
port 80 namevhost www.domain.com (/etc/apache2/sites-enabled/a-notice-site:4)
port 80 namevhost dev.domain.com (/etc/apache2/sites-enabled/dev.domain.com:4)
Syntax OK
答案1
这些配置看起来应该可以正常工作,您是否遇到了某种浏览器问题?也许您使用的浏览器会自动将 www 放在 domain.com 前面?您可以清除浏览器缓存并重试吗?确保您没有按 [Ctrl]+[Enter] 或类似键。