Apache2 - 仮想ホストは別の仮想ホストのコンテンツを表示します

Apache2 - 仮想ホストは別の仮想ホストのコンテンツを表示します

Debian 9 で Apache2 サーバーを実行しています。/etc/apache2/sites-enabled/フォルダー内に 2 つの仮想ホスト構成があります。

初め:

Options FollowSymLinks

<Directory "/srv/">
        Options FollowSymLinks ExecCGI
        Require all granted
</Directory>

<Directory "/srv">
        Options FollowSymlinks ExecCGI
        Require all granted
</Directory>

<VirtualHost *:80>
       ServerName domain.sk
       ServerAlias dev.domain.sk
       DocumentRoot /srv/domain.sk/!www
       <Directory /srv/domain.sk/!www>
                Options Indexes FollowSymlinks ExecCGI
                AllowOverride All
       </Directory>
</VirtualHost>

2番目:

Options FollowSymLinks

<Directory "/home/test/">
        Options FollowSymLinks ExecCGI
        Require all granted
</Directory>

<VirtualHost *:80>
       ServerName domain.sk
       ServerAlias test.dev.domain.sk
       DocumentRoot /home/test/domain.sk/!www
       <Directory /home/test/domain.sk/!www>
                Options Indexes FollowSymlinks ExecCGI
                AllowOverride All
       </Directory>
</VirtualHost>

問題は、私がdev.domain.skそこに行くとわかりました、しかし、私が行くと、test.dev.domain.skコンテンツが表示されdev.domain.skますないの内容test.dev.domain.sk。最初の仮想ホスト構成を無効にすると、 の内容が表示されるので、それを「上書き」してtest.dev.domain.skいるように見えますが、どうすれば解決できますか?dev.domain.sktest.dev.domain.sk

答え1

問題は、ServerName同じ名前のディレクティブを 2 回使用していることです。ServerName各仮想ホストに一意である必要があります。この例では、これは必要ありませんServerAlias。私が言っていることの例を以下に示します。

<VirtualHost *:80>
       ServerName dev.domain.sk
       DocumentRoot /srv/domain.sk/!www
       <Directory /srv/domain.sk/!www>
                Options Indexes FollowSymlinks ExecCGI
                AllowOverride All
       </Directory>
</VirtualHost>

<VirtualHost *:80>
       ServerName test.dev.domain.sk
       DocumentRoot /home/test/domain.sk/!www
       <Directory /home/test/domain.sk/!www>
                Options Indexes FollowSymlinks ExecCGI
                AllowOverride All
       </Directory>
</VirtualHost>

関連情報