所以我有一个免费的.gq域名,几天后就会过期,所以我买了一个.xyz域名。 我需要在Apache(Debian)中更改哪些内容,以便所有内容都能像以前一样工作?
我已经更改了/etc/apache/sites-available的虚拟主机configuration文件,运行命令a2dissite NAME-OF-SUBDOMAIN.domain.gq和a2ensite NAME-OF-SUBDOMAIN.domain.xyz 。 子域名仍然不起作用。 每当我尝试达到mail.domain.xyz我最终在www.domain.xyz网站。
概要:
一个虚拟主机文件的示例(所有其他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的ServerName和ServerAlias指令,并在第一次匹配时停止。 如果找不到任何匹配,则返回到第一个虚拟主机 (默认主机文件名以000-开头,使其成为第一个处理的文件)。
为了使用DocumentRoot和文件sub2.example.comconfiguration的其他指令,您的configuration必须符合以下条件:
/etc/apache2/sites-enabled/sub2.example.com必须有ServerName sub2.example.com 000-default和sub1.example.com不能在ServerName或ServerAlias有sub2.example.com或*.example.com 。 很有可能您已经在configurationwww.example.com的configuration文件中声明了 ServerAlias *.example.com 。
当传入的请求到达Apache服务器时,它会检查请求的“主机”标头,并在它所具有的虚拟主机的“ServerName”指令中查找匹配项,如果不匹配,则首先定义的虚拟主机将回答。
简而言之: 修改每个虚拟主机中的ServerName指令,以确保请求被正确传递到他们必须去的虚拟主机。