現在、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 と一致させるように構成する必要がある場合があります。