Назад | Перейти на главную страницу

Проблема с CNAME и виртуальными хостами

Я использую Apache, и у меня есть DNS-запись CNAME для

sub2.sub1.domain1.com, который указывает на sub1.domain1.com

И у меня есть запись DNS для

sub1.domain1.com, указывающий на IP.

Затем в моем файле httpd.conf у меня есть:

<VirtualHost *:80>
        ServerName www.domain1.com
        DocumentRoot /domain1/www
</VirtualHost>

<VirtualHost *:80>
        ServerName sub1.domain.com
        DocumentRoot /domain1/sub1/www
</VirtualHost>

Тем не менее, мне кажется, что мне чего-то не хватает, например, когда вы посещаете sub2.sub1.domain1.com, он показывает вам страницу для domain1.com. Когда вы посещаете sub1.domain1.com, он показывает правильную страницу для sub1.

Хотя у вас есть запись CNAME, указывающая sub2.sub1.domain1.com на правильный сервер, сервер apache может обслуживать несколько веб-сайтов.

Когда приходит http-запрос, apache проверяет URL-адрес на Название сервера чтобы определить, какой веб-сайт обслуживать. Если есть какие-либо дополнительные имена, указывающие на тот же веб-сайт, вы помещаете их в ServerAlias.

В вашем httpd.conf вам нужно добавить ServerAlias для sub2.sub1.domain1.com

<VirtualHost *:80>
    ServerName sub1.domain.com
    ServerAlias sub2.sub1.domain1.com
    DocumentRoot /domain1/sub1/www
</VirtualHost>

Кроме того, первый VirtualHost объявление в httpd.conf используется как дефолт. Когда приходит http-запрос и не соответствует ни одному Название сервера и ServerAlias, то дефолт сайт обслуживается.