Apache Mass Virtual Host 配置问题

Apache Mass Virtual Host 配置问题

我有一个安装了 LAMP 的 Amazon ec2 实例。我编辑了 /etc/apache2/sites-available/000-deault.conf 并添加了以下内容:

<VirtualHost *:80>
        ServerAlias *
        UseCanonicalName Off
        LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
        CustomLog /var/log/apache2/access.log vcommon
        VirtualDocumentRoot /var/www/vhosts/%0
</VirtualHost>

Listen 443
<VirtualHost *:443>
        ServerAlias *
        UseCanonicalName Off
        LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
        CustomLog /var/log/apache2/access.log vcommon
        VirtualDocumentRoot /var/www/vhosts/%0
</VirtualHost>

当我访问我的域名时,它们指向正确的目录,并且除了一件事之外,一切都运行良好......当我访问带有 www 的域名时,它会出现此错误:

“未找到

该服务器上未找到所请求的 URL /。”

我的目录结构是 /var/www/vhosts/domain.com,但没有 www。- 这可能是问题所在,如果是,我该怎么做才能在不添加 domain.com 和 www.domain.com 目录的情况下解决这个问题?

答案1

你可以使用这个VirtualDocumentRoot来代替:

VirtualDocumentRoot "/var/www/vhosts/%-2.0.%-1.0"

这将使所有子域(包括www.example.com)也指向/var/www/vhosts/example.com

顺便说一句,如果这是您唯一/第一个虚拟主机(在每个端口上),那么您根本不需要ServerAlias *;如果没有找到其他匹配的虚拟主机,则无论如何都会使用默认虚拟主机。

答案2

您的配置有

UseCanonicalName Off

CannonicalName 是一种 DNS 条目。

servername.com 是 DNS 类型 A

www.servername.com 是 DNS 类型 CNAME,重定向到 DNS 类型 a servername.com

默认情况下,UseCanonicalName 是禁用的,从配置文件中删除行并使用以下命令重新加载/重新启动 apache 服务

systemctl restart apache2

建议您配置 ServerName 和 ServerAlias,以便仅当 DNS 匹配时才返回 200 代码和网页。

服务器名称 servername.com

服务器别名 www.servername.com ww2.servername.com


此配置文件中不需要 Listen 443 行,请将其放置在 /etc/apache2/apache2.conf 中

相关内容