我是 Apache 新手,需要您的帮助。我的任务是构建一个动态 Web 服务器(Debian 6.0.4、Apache 2.2、一个公共 IP),该服务器可以托管多个网站和文件(如图片、pdf 等)以供预览。
现在我的问题是我需要两个不同的文档根目录。一个用于网站,另一个用于文件。
我尝试使用 mod-vhost-alias,这样我就不需要在 httpd.conf 中为每个虚拟主机添加新条目。
我的httpd.conf如下所示:
UseCanonicalName Off
NameVirtualHost 192.168.10.45
<VirtualHost preview.example.com>
Servername *. preview.example.com
VirtualDocumentRoot /srv/www/%1/htdocs
</VirtualHost>
<VirtualHost websites. preview.example.com >
Servername *.websites. preview.example.com
VirtualDocumentRoot /srv/www/websites/%1/htdocs
</VirtualHost>
第一个虚拟主机提供文件服务,运行良好。第二个虚拟主机应提供包含网站数据的目录。如果我停用第一个虚拟主机,则子域“网站”下的网站才可访问。
我要做什么才能让它们同时工作?
如果该主题已经处理过,请给我一个链接。
感谢您付出的时间和精力。
答案1
您需要使用ServerAlias
而不是 来ServerName
作为通配符条目。 ServerName
不支持通配符。但是,您仍然应该有一ServerName
组。
你的<VirtualHost>
定义也需要匹配确切地按照你的NameVirtualHost
指示。
类似这样的内容:
NameVirtualHost 192.168.10.45:80
<VirtualHost 192.168.10.45:80>
ServerAliast preview-vhost
ServerName *.preview.example.com
VirtualDocumentRoot /srv/www/%1/htdocs
</VirtualHost>
<VirtualHost 192.168.10.45:80>
ServerAlias websites-vhost
ServerName *.websites.preview.example.com
VirtualDocumentRoot /srv/www/websites/%1/htdocs
</VirtualHost>