Уважаемые знатоки - прошу помощи.
Есть комп под 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?