具有多个文档根目录的 Apache 2.2 mod-vhost-alias

具有多个文档根目录的 Apache 2.2 mod-vhost-alias

我是 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>

相关内容