我有 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>