У меня есть сервер Apache2, работающий на Debian 9. И у меня есть 2 конфигурации виртуального хоста в /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>