Apache2 - 虛擬主機顯示另一個虛擬主機的內容

Apache2 - 虛擬主機顯示另一個虛擬主機的內容

我有 Apache2 伺服器在 Debian 9 上運行/etc/apache2/sites-enabled/

第一的:

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>

第二:

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.sk「覆蓋」該配置test.dev.domain.sk,我該如何解決它?

答案1

問題是您使用ServerName相同名稱的指令兩次。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>

相關內容