Apache: VirtualHost の動的ドメインとサブドメインを別のフォルダにポイントする

Apache: VirtualHost の動的ドメインとサブドメインを別のフォルダにポイントする

現在、2 つの VirtualHost があります。

<VirtualHost *:80>
 ServerName *.*.comp1.office1.lan
 VirtualDocumentRoot /var/www/%-4/%-5/
 UseCanonicalName Off
 <Directory /var/www/>
  Options Indexes FollowSymLinks -MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
 </Directory>
</VirtualHost>

<VirtualHost *:80>
 ServerName *.comp1.office1.lan
 VirtualDocumentRoot /var/www/%-4/
 UseCanonicalName Off
 <Directory /var/www/>
  Options Indexes FollowSymLinks -MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
 </Directory>
</VirtualHost>

次のようなドメインフォルダ.サイト.comp1.office1.lan正しく解決されます(/var/www/site/folder/)。しかし、サイト.comp1.office1.lan404 エラーが表示されます。

そして、Apache は次の行をログに記録します:

[time...] [error] [client my.ip.there] File does not exist: /var/www/site/_

仮想ホストの読み込み順序を変更すると(2番目が1番目より先に読み込まれる)、サイト.comp1.office1.lanうまく動作しますが、404応答の問題はフォルダ.サイト.comp1.office1.lan

答え1

通常、vhostのServerNameエントリではワイルドカードは使用せず、代わりにServerAliasディレクティブにワイルドカードを配置します。たとえば、

ServerName comp1.office.lan
ServerAlias *.*.comp1.office.lan
...

ServerName をすべて異なるものにし、vhost 名を ServerAlias と一致させるように構成する必要がある場合があります。

関連情報