вот мой /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.
Если вы определяете только один виртуальный хост, то все запросы к 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.