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

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

我有一个免费的 .gq 域名,几天后就会过期,所以我买了一个 .xyz 域名。我需要在 Apache (Debian) 中更改哪些内容才能让一切恢复正常?

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


概括:

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

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

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

现在它能正常工作了。我不知道具体原因。我唯一做的就是apt update && apt upgrade -y。我不知道是否是升级导致的,我只在更新 2 小时后检查过。

答案1

您可以VirtualHost使用 列出所有已配置和活动的apache2ctl -S。列表应该是这样的:

*: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用 d 开头/etc/apache2/apache2.confInclude sites-enabled/

现在,当浏览器发送以

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

Apache 执行完配置ServerNameServerAlias指令后停止在第一场比赛. 如果没有找到任何匹配项回到第一个虚拟主机(默认主机文件名以此开头,以000-使其成为第一个处理的文件)。

为了使用DocumentRoot文件中配置的其他指令,sub2.example.com您的配置必须满足以下条件:

  1. /etc/apache2/sites-enabled/sub2.example.com一定有ServerName sub2.example.com
  2. 任何前面的配置文件,即000-defaultsub1.example.com都不得有sub2.example.com*.example.comServerName或中ServerAlias

很可能你已经已经声明 ServerAlias *.example.com在配置的配置文件中www.example.com

答案2

当传入请求到达 Apache 服务器时,它会检查其中请求的“Host”标头,并在其拥有的虚拟主机的“ServerName”指令中查找匹配项,如果不匹配,则第一个定义的虚拟主机将会应答。

简而言之:修改每个虚拟主机中的 ServerName 指令以确保请求正确地传递到虚拟主机。

相关内容