У меня есть сервер 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
, как я могу это решить?
Проблема в том, что вы используете 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>