有没有办法在apache2添加虚拟主机的子域名谁不存在?
现在我试试这个:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] ServerName *.devhouse.nl DocumentRoot /var/www/errors <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/errors/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log </VirtualHost> Include sites-available/devhouse.nl.vhost
(第二个虚拟主机)
但是这不起作用。 我看到/ var / www中的文件不在/ var / www / errors中
我怎样才能解决这个问题?
您可以创build默认的VirtualHost,只要没有匹配的NamedVirtualHostconfiguration,就会触发该默认的VirtualHost。 这基本上就像你给的第一个例子。 然后,为所有你想要处理的域添加NamedVirtualHosts(例如添加ServerName www.example.com等)。
每当请求的虚拟主机未configuration时,默认情况下将提供该请求。 在这个你可能要显示特定的内容和/或触发redirect到一个现有的(或不同的)服务器。
您可能需要在VirtualHost块之前声明NameVirtualHost *:80 。
如果NameVirtualHost *:80或类似的东西还没有在您的configuration文件中,它必须是。 当您的虚拟主机使用相同的IP地址和端口(您的)时,这是必需的。 这告诉Apache它应该使用HTTP请求中的Host:头来select哪个VirtualHost应该处理这个请求。
如果使用NameVirtualHost,则还必须在每个VirtualHost中都有一个ServerName指令。 这是Apache与Host:头匹配的内容。 ServerName指令不能包含*字符。 ServerName必须完全匹配您的域。 如果你想匹配www.devhouse.nl以及devhouse.nl,那么你将需要一个ServerAlias指令。 您可以拥有尽可能多的ServerAlias指令,只需要一个ServerName即可。
ServerName devhouse.nl ServerAlias www.devhouse.nl ServerAlias mail.devhouse.nl
具有上述内容的VirtualHost将匹配发送到这三个域之一的HTTP请求。 任何其他请求将转到默认的VirtualHost。
在configuration文件中列出的第一个VirtualHost将成为默认的VirtualHost。 这是一个将处理请求,如果它不匹配任何其他VirtualHost。 如果你想把你第二个列出的那个作为默认值,你将不得不在文件中交换它们。
关于这个的Apache文档是相当不错的: http : //httpd.apache.org/docs/2.2/vhosts/examples.html
你可以让Apache列出你的VirtualHosts,以及命令apachectl -S (这是一个大写apachectl -S S)
Include在最后看起来很奇怪。 列表的第一部分是包含文件的内容吗?
如果所有这一切都不能立即采取,你需要在这里做的是:
NameVirtualHost *:80放在它们之前。 *. 从ServerName指令或将其replace为www. 只要它是一个你想要匹配的域,那么在默认的VirtualHost中究竟会发生什么并不重要。