Я новичок в apache и httpd.conf
Проблема, с которой я столкнулся, заключается в том, что мне нужен другой веб-сайт для перехода к разным конфигурациям vhost, и если запрашивается только IP-адрес, он должен перейти в корневой index.html
Это отлично работает для виртуальных хостов:
<VirtualHost *:80>
DocumentRoot /var/www/html/bali-accommodation.co
ServerName www.bali-accommodation.co
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/balibeach.co
ServerName www.balibeach.co
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/dating-website.co
ServerName www.dating-website.co
</VirtualHost>
Однако, когда я просто указываю IP, он обращается к www.XXX.XXX.XXX.XXX (добавляет www).
Я знаю, что на веб-сайтах есть перенаправление .htaccess, которое добавляет www, но я не хотел, чтобы IP-адрес входил в конфигурацию vhosts.
Я попытался добавить это в начало конфигурации Vhost:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName localhost
</VirtualHost>
с указанным выше он отлично показывает index.html, но все веб-сайты входят в этот улов.
Я также пробовал это для веб-сайтов vhosts:
DocumentRoot /var/www/html/bali-accommodation.co ServerName www.bali-accommodation.co
Я безуспешно пробовал описанное выше с префиксом www в первой строке и без него.
Есть ли способ, чтобы vhosts работали для доменов, и если кто-то просто вводит IP, он переходит в корневой index.html? /var/www/html/index.html?
Большое спасибо, Адам
Apache ищет vhosts в том порядке, в котором они определены для совпадения. Если в директиве ServerName или ServerAlias не указан другой хост, Apache будет обслуживать первый определенный виртуальный хост. Вы можете определить общий vhost как последний
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName SomeName
ServerAlias *
</VirtualHost>
Это будет соответствовать чему угодно.