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

httpd - виртуальные хосты переходят на один и тот же сайт

вот мой /etc/httpd/conf.d/test.conf

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName test.dev
    ServerAlias test.dev.*.xip.io
    DocumentRoot /var/www/html/user/test/web
    ErrorLog "/var/www/html/user/test/app/logs/httpd_error.log"
    CustomLog "/var/www/html/user/test/app/logs/httpd_access.log" combined
    <Directory "/var/www/html/user/test/web">
        # AllowOverride All      # Deprecated
        # Order Allow,Deny       # Deprecated
        # Options All
        # Allow from all         # Deprecated
        # Require all granted    # << New way of doing it
        Options +FollowSymlinks +Indexes
        AllowOverride all
    </Directory>
</VirtualHost>

Доступ http://test.dev.192.168.1.4.xip.io/ успешно перенаправляет меня на нужный веб-сайт. Доступ http://192.168.1.4/ также перенаправляет меня на тот же веб-сайт вместо индекса, который я ожидал увидеть. Кроме того, доступ http://test.dev-some-random-string.192.168.1.4.xip.io/ также перенаправит меня на тот же сайт.

Как мне настроить это так, чтобы при попытке доступа test.dev.192.168.1.4.xip.io, Я окажусь на странице, которую кодирую, при доступе 192.168.1.4.xip.io покажет мне домашнюю страницу.

В настоящее время я использую centos 6, работающий в виртуальной коробке с мостовым адаптером для сети. Вот мой /etc/httpd/conf/httpd.conf.

http://pastebin.com/iFBin5Lu

Если вы определяете только один виртуальный хост, то все запросы к httpd будут обслуживаться этим виртуальным хостом, независимо от того, совпадают они с ServerName или ServerAlias ​​или нет, поскольку первый виртуальный хост также является виртуальным хостом по умолчанию. Найдите "виртуальный хост по умолчанию" в Apache Документация «Поддержка виртуального хоста на основе имени».

Также обратите внимание, что как только вы определяете какие-либо виртуальные хосты, ServerName по умолчанию исчезает, и вам нужно определить новый виртуальный хост, чтобы воссоздать его, если вы все еще хотите его использовать. См. Вставку «Главный хост уходит» по указанной выше ссылке.

Итак, попробуйте определить виртуальный хост по умолчанию, который может быть таким простым, как

<VirtualHost *:80>
    DocumentRoot /var/www/html
</VirtualHost>

и убедитесь, что это приходит перед все остальные ваши виртуальные хосты в конфигурации. Тогда любые запросы, которые не соответствуют другим виртуальным хостам, будут обслуживаться этим.

Вам необходимо определить VirtualHost для каждой веб-страницы, которую вы хотите показать; даже если 192.168.1.4 является основным, вам также необходимо определить VirtualHost, где определите «ServerAlias ​​192.168.1.4». Если есть только один VirtualHost, вы всегда будете перенаправлены на сайт, определенный в ServerAlias.