Apache大量虚拟主机configuration问题

我有一个安装了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访问域名时。 它给出了这个错误:

“未find

在此服务器上找不到请求的URL /。

我的目录结构是/var/www/vhosts/domain.com没有www。 – 这可能是问题,如果是的话,我可以做什么来解决这个问题,而无需添加domain.com和www.domain.com目录?

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

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

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

顺便说一句,如果这是你唯一的/第一个虚拟主机(在每个端口上),你根本不需要ServerAlias * ; 如果找不到其他匹配的虚拟主机,则默认的虚拟主机将被使用。

你的configuration有

 UseCanonicalName Off 

CannonicalName是一种DNS条目。

servername.com是DNStypesA

http://www.servername.com是DNStypesCNAME,redirect到DNStypesservername.com

在默认情况下,UseCanonicalName被禁用,从configuration文件中删除行并重新加载/重新启动Apache服务

 systemctl restart apache2 

它build议您configurationServerName和ServerAlias,只有在DNS匹配时才返回200代码和网页。

ServerName servername.com

ServerAlias http://www.servername.com ww2.servername.com


你在这个configuration文件中不需要Listen 443,放在/etc/apache2/apache2.conf中