我有 2 个问题 - Apache conf 文件中的 ServerName 是否以 www 开头有关系吗?此外,如果我有以下虚拟主机:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我还应该有以下内容:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案1
阿帕奇ServerName
指令用于 Apache 生成的默认(错误)消息和标头等。有些人喜欢让它们与网站访问者使用的主机名相匹配。
然后,您需要为每个 URL 主机名提供一个 VirtualHost。
其他人更喜欢较少的 VirtualHost 块并使用ServerAlias
指令为虚拟主机分配备用名称(当所有名称都可以使用相同的内容时)。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com example.net www.example.net
...
</VirtualHost>
据我所知,您使用哪个名称作为 ServerName 主要取决于个人喜好。有些人喜欢裸域名,而其他人则喜欢 www 记录。
而且,正如 @HåkanLindqvist 所评论的,您还可以决定使用单个 URI 来发布您的网站并将您的其他域名重定向到该网站:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect "/" "http://www.example.com"
</VirtualHost>
(需要注意的是,您应该为您的网站设置 TLS 证书并使用并重定向到 HTTPS。)