我的域名已更改,我需要在Apache中更改哪些内容?

所以我有一个免费的.gq域名,几天后就会过期,所以我买了一个.xyz域名。 我需要在Apache(Debian)中更改哪些内容,以便所有内容都能像以前一样工作?

我已经更改了/etc/apache/sites-available虚拟主机configuration文件,运行命令a2dissite NAME-OF-SUBDOMAIN.domain.gqa2ensite NAME-OF-SUBDOMAIN.domain.xyz子域名仍然不起作用。 每当我尝试达到mail.domain.xyz我最终在www.domain.xyz网站。


概要:

  • 使用domain.gqconfigurationApache2
  • 我现在使用domain.xyz
  • 我如何告诉Apache我不再使用旧的域名,而是新的域名?
  • 我如何让我的子域(虚拟主机)再次工作?

一个虚拟主机文件的示例(所有其他vh文件具有相同的scheme):

 <VirtualHost *:80> ServerName pic.domain.xyz DocumentRoot /var/www/pic/ </VirtualHost> 

它现在有效。 我不完全知道为什么。 我做的唯一的事情就是apt update && apt upgrade -y 。 我不知道升级是否对它负责,我更新后只检查了2个小时。

您可以使用apache2ctl -S列出所有已configuration和活动的VirtualHost 。 上市是这样的:

 *:80 is a NameVirtualHost default server www.example.com (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost www.example.com (/etc/apache2/sites-enabled/000-default:1) port 80 namevhost sub1.example.com (/etc/apache2/sites-enabled/sub1.example.com:1) port 80 namevhost sub2.example.com (/etc/apache2/sites-enabled/sub2.example.com:1) 

这些主机名与/etc/apache2/sites-enabled/文件名顺序相同,因为实际上它们最初是在Include sites-enabled/ /etc/apache2/apache2.conf Include d。

现在,当浏览器发送HTTP请求开始

 GET / HTTP/1.1 Host: sub2.example.com 

Apache通过configuration的ServerNameServerAlias指令,并在第一次匹配时停止。 如果找不到任何匹配,则返回到第一个虚拟主机 (默认主机文件名以000-开头,使其成为第一个处理的文件)。

为了使用DocumentRoot和文件sub2.example.comconfiguration的其他指令,您的configuration必须符合以下条件:

  1. /etc/apache2/sites-enabled/sub2.example.com必须有ServerName sub2.example.com
  2. 任何以前的configuration文件,即000-defaultsub1.example.com不能在ServerNameServerAliassub2.example.com*.example.com

很有可能您已经在configurationwww.example.com的configuration文件中声明了 ServerAlias *.example.com

当传入的请求到达Apache服务器时,它会检查请求的“主机”标头,并在它所具有的虚拟主机的“ServerName”指令中查找匹配项,如果不匹配,则首先定义的虚拟主机将回答。

简而言之: 修改每个虚拟主机中的ServerName指令,以确保请求被正确传递到他们必须去的虚拟主机。