我一直在使用 mod_vhost 别名,不允许我捕获指向我的托管服务提供商的任何域的默认服务器设置。
现在,我还想在每个子域(assets.domain.xyz,domain.xyz)上都拥有一个子域的功能,但我似乎无法同时启用这两个功能。
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "/www/%1.0.%-1.0/public"
ServerName %1.0.%-1.0
ServerAlias %1.0.%-1.0.*.xip.io
<Directory />
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "/www/%2.0.%-1.0/assets"
ServerName assets.%2.0.%-1.0
ServerAlias assets.%2.0.%-1.0.*.xip.io
</VirtualHost>
无论哪个先起作用,后面的都会被跳过。
这有可能吗?我想避免每次有新域名指向我时都要重复这一操作,并尽量避免编写任何脚本。
编辑 我正在尝试获取它,以便可以拥有两个如下所示的通用映射:
domain.dev => /www/domain.dev/public
assets.domain.dev => /www/domain/assets
如果仅仅拥有 /public/assets 会更简单,那么我会很高兴,因为无论如何这都只会提供静态内容。
答案1
我让它工作的唯一方法是添加一个非动态虚拟主机来处理子域。
<VirtualHost *:80>
ServerAlias %-2.0.%-1.0
VirtualDocumentRoot /www/%-2.0.%-1.0/public
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAlias assets.*
VirtualDocumentRoot /www/%-2.0.%-1.0/assets
<Directory />
Order deny,allow
Allow from all
AllowOverride None
SetHandler default-handler
php_flag engine Off
</Directory>
</VirtualHost>
目前这样就可以了,因为至少我不需要经常重复它。