我已经在虚拟主机中应用了 ServerName 和 ServerAlias,并且这里提到 Servername 是服务器用来标识自身的主机名和端口,而 ServerAlias 是主机的备用名称。现在我的网站在 https+www.example.com 中运行,所以我设置了我的
ServerName as "www.example.com"
和我的ServerAlias put it as "example.com"(Previously was comment out, now I tried to apply it back)
这样当我在浏览器中输入“example.com”时,它会将我重定向到“https://www.example.com“(如果我理解错误,请纠正我)。但即使在我应用这些之后,它仍然没有重定向我,我需要刷新 DNS 并停止启动我的 DNS 吗?因为有几次所有更改都已完成,重新启动 apache 并且没有任何反应,直到我刷新 DNS,这是必须的吗?提前谢谢!
答案1
我不能发表评论,因为我是新手,但你应该看看https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname
我假设你正在使用 Apache,并且基于名称的虚拟主机
再次抱歉,我无法将此作为评论留下。
答案2
这ServerName
以及ServerAlias
被同等对待,即相同的配置适用于部分中两个指令中指定的所有主机名<VirtualHost>
。唯一的区别是用作ServerName
标识,因此不能包含多个主机名。这就是为什么有一条单独的ServerAlias
指令用于其他主机名。这不是一个明显的解决方案,但这就是 Apache 决定安排的方式。例如,Nginx 以不同的方式处理这个问题,它有一个server_name
可以有多个主机名的指令。
没有从ServerAlias
到的自动重定向ServerName
,但您需要使用单独的<VirtualHost>
部分进行配置。此示例将所有example.com
&重定向*.example.com
到规范www.example.com
。
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
Redirect / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
. . .
</VirtualHost>
请注意,这ServerName example.com
并不意味着这example.com
是规范名称,因为存在从域顶点到子域的重定向www
。