@andrshpa

Apache 2.4, не могу настроить name-based VirtualHost на localhost. Почему ошибка 400?

Уважаемые знатоки - прошу помощи.
Есть комп под Windows 7. Нужен локальный сервер на нем. Раньше пользовался XAMPP, но он перестал меня устраивать.
Решил отдельно поставить Apache2.4+PHP+mySQL. Особых проблем не возникло.
Но уже второй день не могу настроить name-based VirtualHost. т.е. нужно что бы по адресам localhost, captcha_lite и при необходимости еще другим именам - открывались разные сайты. На XAMPP это работало.
Как я настраивал это на Apache:
В файле httpd.conf раскомментировал эти строки
LoadModule vhost_alias_module modules/mod_vhost_alias.so

Include conf/extra/httpd-vhosts.conf


в файле httpd-vhost.conf написал следующее
<VirtualHost *:80>
    DocumentRoot "D:/USR/www"
    ServerName localhost
	ServerAlias www.localhost
    ErrorLog "D:/USR/log/localhost/error.log"
    CustomLog "D:/USR/log/localhost/access.log" common
	ServerAdmin webmaster@localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "D:/USR/www/captcha_lite"
    ServerName captcha_lite
	ServerAlias www.captcha_lite
    ErrorLog "D:/USR/log/captcha_lite/error.log"
    CustomLog "D:/USR/log/captcha_lite/access.log" common
	ServerAdmin webmaster@captcha_lite
</VirtualHost>


Естественно сделал соответствующие записи в hosts

Но ничего не работает!

При заходе на localhost открывается то что должно открываться, однако это происходит только потому, что в httpd-vhost.conf он указан первый и используется по умолчанию в любых ситуациях. Например, тоже самое открывается если зайти на s1.localhost (тоже прописан в hosts на тот же адрес).

Если же зайти на captcha_lite то выдает ошибку 400. А должна открываться страничка с одной строкой для теста.
Bad Request

Your browser sent a request that this server could not understand.

Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.


Проблема заключается в следующем:
Как все должно работать, согласно описанию
With name-based virtual hosting, the server relies on the client to report the hostname as part of the HTTP headers. Using this technique, many different hosts can share the same IP address.

When a request arrives, the server will find the best (most specific) matching argument based on the IP address and port used by the request. If there is more than one virtual host containing this best-match address and port combination, Apache will further compare the ServerName and ServerAlias directives to the server name present in the request.


Браузер все делает правильно - в заголовках есть Host "captcha_lite" . А сервер в ответ присылает ошибку 400.
ПОЧЕМУ? Как будто я просто что то не так настроил, но что? Перерыл уже весь гугл. Помогите пожалуйста.
Самое интересное, что при добавлении в httpd-vhosts.conf такого:
<VirtualHost *:80>
    ServerAdmin webmaster@s1.localhost
    DocumentRoot "D:/USR/www/s1.localhost"
    ServerName s1.localhost
    ErrorLog "D:/USR/log/s1.localhost/error.log"
    CustomLog "D:/USR/log/s1.localhost/access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@s2.localhost
    DocumentRoot "D:/USR/www/s2.localhost"
    ServerName s2.localhost
    ErrorLog "D:/USR/log/s2.localhost/error.log"
    CustomLog "D:/USR/log/s2.localhost/access.log" common
</VirtualHost>


по адресу s1.localhost открывается то что надо, а по s2.localhost - открывается то что должно открываться по адресу captcha_lite.
если оставить там только эти записи - все вообще работает как надо, но только для них.
Как заставить работать captcha_lite?
  • Вопрос задан
  • 2455 просмотров
Решения вопроса 1
@WinnerIT
Программист и фотограф-любитель
"_"или "underscore" не разрешены в доменных именах.
Поменяйте название на "captcha-lite"
измените конфигурация хоста.

Удачи
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@DmStrelok
Попробуйте создать вручную путь: D:/USR/log/s1.localhost/
У меня из-за несуществующего пути тоже были проблемы с apache.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы