如何在 apache2 中禁用子域名?

如何在 apache2 中禁用子域名?

几天前,我在域名注册商的 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>

相关内容