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

apache httpd.conf - конфигурация виртуального хоста

Я новичок в 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>

Это будет соответствовать чему угодно.