使用 mod_vhost_alias 时可以定义多个 vhost 吗

使用 mod_vhost_alias 时可以定义多个 vhost 吗

我一直在使用 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>

目前这样就可以了,因为至少我不需要经常重复它。

相关内容