所以我现在 (对于每个域) 有的是这个
<VirtualHost *:80>
ServerName exmaple.com
ServerAlias *.example.com
DirectoryIndex index.php index.html
VirtualDocumentRoot /srv/www/example.com/public_html/%0
</VirtualHost>
但我想通过以下方式避免在另一个域中重复此操作
<VirtualHost *:80>
ServerName *
ServerAlias *
DirectoryIndex index.php index.html
VirtualDocumentRoot /srv/www/%2+/public_html/%0
</VirtualHost>
%2+ 除子域名外全部为空。这可能吗……
答案1
只要您只有单级子域名,那么这种方法就行。如果您想通过 提供所有页面mod_vhost_alias
,只需VirtualDocumentRoot
从指令中删除该行<VirtualHost>
,然后删除所有<VirtualHost>
指令。
您无需指定通配符ServerName
。它无论如何都需要 FQDN,因此您无论如何都不能使用它。与 类似ServerAlias
,由于VirtualDocumentRoot
负责查找提供页面的正确位置,因此无需使用,因为Host:
标头将被动态处理。
阅读文档mod_vhost_alias和动态配置的海量虚拟主机应有助于消除任何剩余的困惑。