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>

どちらか最初の方が機能し、後者はスキップされます。

これは本当に可能なのでしょうか? 新しいドメインが自分に向けられるたびにこれを複製する必要がないようにし、スクリプトを記述しないようにしたいと思います。

編集 以下のような 2 つの汎用マッピングを作成できるようにしたいと考えています。

domain.dev        => /www/domain.dev/public
assets.domain.dev => /www/domain/assets

/public/assets だけを用意する方が簡単なら、それで満足です。いずれにしても、静的コンテンツのみを提供するからです。

答え1

これを動作させる唯一の方法は、サブドメインを処理するために非動的 vhost を追加することです。

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

少なくとも頻繁に繰り返す必要がないので、今のところはこれで十分です。

関連情報