
私はしばらくの間、ホスティング プロバイダーを指すドメインのデフォルトのサーバー設定をキャプチャできないようにするために、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>
少なくとも頻繁に繰り返す必要がないので、今のところはこれで十分です。