2015-05-30 6 views
0

Я нахожусь в Windows 8 и только что установил Wamp 2.5 (Apache 2.4.9) на C:/wamp для локального тестирования кода. У меня есть репозиторий исходного кода на D:/workpace/project1, которым я управляю с помощью GIT (GIT - одна из причин, по которым я не хочу нарушать ее местоположение).Включение виртуальных хостов в Apache запрещает каждому хосту (403)

После установки Wamp я просто включил виртуальные хосты, раскомментировав следующую строку в httpd.conf.

#Include conf/extra/httpd-vhosts.conf 

Затем я направился в conf/extra/httpd-vhosts.conf, создав резервную копию и создал виртуальный хост.

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "D:/workspace/project1/" 
    ServerName project1 
    ServerAlias p1 
    ErrorLog "logs/project1(local)-error.log" 
    CustomLog "logs/project1(local)-access.log" common 
    <Directory "D:/workspace/project1/"> 
     Require all granted 
    </Directory> 
</VirtualHost> 

Также отредактировал файл hosts и добавил необходимые строки.

127.0.0.1  project1 
127.0.0.1  p1 

Проблема заключается в том, что я получаю ошибку 403 Forbidden не только когда я доступ project1/ и p1/, но когда я доступ localhost/.

Когда я отключить HTTPd-vhosts.conf в httpd.conf комментированием,

Include conf/extra/httpd-vhosts.conf 

Я могу получить доступ к localhost/, но, как и ожидалось, project1/ и p1/ тоже полны решимости localhost/.

Удивительно, но когда я снова включить httpd-vhosts.conf в httpd.conf и восстановить резервную копию оригинала (без изменений) httpd-vhosts.conf, я все еще получаю 403 (Forbidden) даже на localhost/. Но опять же, когда я отключу httpd-vhosts.conf, localhost/ подходит к норме.

Кроме того, удивительно отметить, что если я изменю DocumentRoot на папку-заглушку в пределах c:/wamp/www, история будет такой же. Так что это происходит не только тогда, когда DocumentRoot находится за пределами c:/wamp/www.

Я чувствую, что у меня есть что-то дополнительное, потому что нет никаких шансов, что я что-то испортил, поскольку это новая установка, и я не внес никаких изменений, кроме тех, что были выше.

В чем причина того, что Apache не ладит с виртуальными хостами?

+0

Просто примечание стороны: почему с помощью виртуальных хостов на местном уровне? Просто создайте 'Alias' для каждого проекта, и вы в порядке. Также не требуется настройка файла хостов ... – arkascha

+0

Для самой виртуальной хоста: первый шаг _always_ - просмотр файла журнала ошибок http-серверов, особенно во время перезапуска. Именно там сервер регистрирует проблемы с его конфигурацией. Также контролируйте этот файл при выполнении запросов, вы можете найти дополнительную информацию о проблемах. Вы найдете дополнительную информацию, которая может помочь в вашей проблеме? – arkascha

+0

@arkascha, Strange !!! ... Журналы не обновляются, когда включен 'httpd-vhosts.conf' ...' project1 (local) -error.log' и 'project1 (local) -access.log' тоже не создаются. –

ответ

1

Есть несколько вещей, которые вы не учли.

При создании виртуальных хостов Apache игнорирует хост, определенный в httpd.conf, поэтому вам также необходимо создать виртуальный хост для localhost. Это объясняет, почему вы не можете добраться до localhost, когда вы активировали виртуальные хосты.

Apache имеет IPV4 и IPV6, поэтому при создании доменных имен в файле HOSTS вам необходимо сделать это как для стеков IPV4, так и для IPV6. Таким образом, вы должны были бы иметь HOSTS файл, как это: -

#IPV4 Stack 
127.0.0.1 localhost 
127.0.0.1 project1 

#IPV6 Stack 
::1 localhost 
::1 project1 

Браузер делает некоторое произвольное решение о том, чтобы использовать стек IPv4 или IPv6.Пожелайте, чтобы я понял, почему и по какой причине он делает это решение лучше, но в основном при вводе имени домена браузер или сетевой стек выбирает IPv4 или IPv6 для вашего первого контакта с доменом, а затем придерживается этого решения, но он может использовать либо.

Вот пост, который should help you create Virtual Hosts

Смежные вопросы