У нас установлен новый сервер Centos с Apache 2.4.9. Я пытаюсь заставить vhost работать. DNS разрешается на нужный компьютер, и я вижу страницу Apache по умолчанию, так что это не проблема брандмауэра, и Apache запускается.

/etc/httpd/conf/httpd.conf

Include conf.d/*.conf

/etc/httpd/conf.d/vhosts.conf

<VirtualHost *>
    ServerName www.abctest.com
    DocumentRoot /websites/abctest.com/htdocs    
    <Directory /websites/abctest.com/htdocs/public>
            AllowOverride All
    </Directory>
</VirtualHost>

ls /etc /httpd /modules

modules/mod_vhost_alias.so

Веб-сайт

В /websites/abctest.com/htdocs находится файл index.php с helloworld. После перезапуска httpd я все еще получаю страницу Apache, а не текст helloworld.

Как я могу заставить это работать?

4 ответа4

0

Ваша конфигурация VirtualHost указывает, что apache принимает запрос от любого из интерфейсов хоста, но у него должен быть заголовок Host: www.abctest.com для выбора DocumentRoot как /websites/abctest.com/htdocs . Обычно любой другой заголовок Host заставит apache использовать VirtualHost по умолчанию.

В случае, если вы пытаетесь открыть веб-страницу с помощью http://localhost вы получите страницы по умолчанию DocumentRoot .

Вы можете проверить это с помощью команды curl .

curl -L 'http://www.abctest.com'

А также убедитесь, что у вас есть IP-адрес для размещения хоста для www.abctest.com в /etc/hosts , как показано ниже.

127.0.0.1   www.abctest.com www
0

Несколько вещей для проверки:

Убедитесь, что у вас нет других записей VirtualHost, которые впоследствии могут быть вызваны.

Обычно запись * в VirtualHosts используется для запросов без ServerName, поэтому, хотя я и ожидал, что это сработает, попробуйте изменить первую строку с:

<VirtualHost *>

в

<VirtualHost www.abctest.com:80>

(Предполагается, что вы используете порт 80 по умолчанию для хоста).

Помимо этих случайных элементов, взгляните на ваш access_log и error_log. Они могут помочь вам определить, какой путь используется, чтобы затем найти его в вашем файле .conf, чтобы сузить конфликт / причину.

0

Попробуйте добавить определенный ip и порт в каждый из ваших блоков VirtualHost. Итак, поставьте:

<VirtualHost 127.0.0.1:80>
-1

Вам необходимо включить виртуальный хостинг на основе имени.

На моем ящике Centos он находится в нижней части /etc/httpd/conf/httpd.conf как

# NameVirtualHost *:80

Вам нужно удалить символ «#» в начале строки, чтобы включить его, а затем перезапустить Apache.

Без вышеперечисленного Apache использует виртуальный хост на основе IP. Поскольку (я предполагаю) имя вашего хоста и виртуального хоста разрешается на один и тот же IP-адрес, то побеждает первый, который в вашем случае является стартовой страницей Apache.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .