我有一个安装了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中