几天前,我在域名注册商的 DNS 编辑器上启用了指向 mysite.com 的“www”子域名主机记录,并且更改已经传播。
不过我想暂时禁用它。
1)为什么即使我注释掉了以下代码,www.mysite.com 仍然能够运行/etc/apache2/sites-available/mysite
?
#<VirtualHost *:80>
#ServerAlias www.mysite.com
#DocumentRoot /mywebsite
#</VirtualHost>
是否甚至需要在 apache2 中进行更改才能启用子域?
2)如何暂时禁用 apache2 的“www”子域名?
答案1
您可能需要通过重新启动 apache 来强制重新加载 apache 配置,以确保其使用最新的指令;
service httpd restart
<-- 在 centos 或 redhat 上
/etc/init.d/apache2 restart
<--- 在 debian 或 ubuntu 上
如果这是一个实时生产站点,您可能还需要考虑在应用更改之前运行配置检查;
service httpd configtest
<-- 在 centos 或 redhat 上
Syntax OK
/etc/init.d/apache2 configtest
<--- 在 debian 或 ubuntu 上
如果 apache 无法识别该别名www.mysite.com
,那么它将被发送到默认站点,即 _default_:80 或 *:80,具体取决于您是否配置了NameVirtualHost *:80
如果您使用的是合理的操作系统,则apachectl
可以使用该命令来枚举 apache 所知道的虚拟主机,如下所示;
[root@g0803 init.d]# apachectl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server g0801.hpl.com (/etc/httpd/conf.d/boopo.conf:110)
port 80 namevhost 01.hpl.com (/etc/httpd/conf.d/boopo.conf:110)
port 80 namevhost portal.boep.com (/etc/httpd/conf.d/lime-portal.conf:5)
_default_:443 g0803.hpl.com (/etc/httpd/conf.d/ssl.conf:81)
Syntax OK
使用 HTTP 1.1 和基于名称的虚拟主机,apache 检查“Host”标头以决定将请求发送到何处,因此,除非您希望将子域记录切换到某个空目的地,否则您将需要放入 VirtualHost 以使用 www Host 标头捕获这些请求,并将它们重定向到暂存页面或某个死胡同服务器。
临时的解决方法是将您的网站指向一些空文件夹,或返回到默认主页,例如;
<VirtualHost *:80>
ServerAlias www.mysite.com
DocumentRoot /var/www/html
</VirtualHost>