Ответ 1
Сначала вам нужно удалить примеры фиктивных определений из вашего файла vhost-httpd.conf. Они приведены только в качестве примеров только для начала работы с синтаксисом и не должны оставаться в активном conf/extra/httpd-vhosts.conf
, поскольку они указывают на несуществующие папки.
Поэтому удалите эти 2 определения из файла:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "g:/Apache24/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "g:/Apache24/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common
</VirtualHost>
Второй Apache 2.4.x поддерживает IPV4 (127.0.0.1) и IPV6 (:: 1), поэтому ваш файл hosts
должен выглядеть следующим образом с определениями версий IPV4 и IPV6 для каждого сайта. Браузер может произвольно использовать любой из них, поэтому вам понадобятся оба варианта, но, вероятно, он будет использовать сеть IPV6 вместо IPV4, если оба на самом деле активны на вашем компьютере.
127.0.0.1 localhost
::1 localhost
127.0.0.1 mysite.dev
::1 mysite.dev
Теперь на 2 виртуальных хостах, которые действительно существуют в вашей системе, попробуйте это как определение виртуального хоста:
<VirtualHost *:80>
DocumentRoot "g:/wamp/www"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
<Directory "G:/wamp/www">
AllowOverride All
Options Indexes FollowSymLinks
Require local
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "g:\wamp\www\mysite\public"
ServerName mysite.dev
ServerAlias www.mysite.dev
ErrorLog "logs/mysite-error.log"
CustomLog "logs/mysite-access.log" common
<Directory "G:/wamp/www/mysite/public">
AllowOverride All
Options Indexes FollowSymLinks
Require local
</Directory>
</VirtualHost>
Раздел <Directory>....</Directory>
в разделе <VirtualHost>....</VirtualHost>
сообщает Apache, с каких IP-адресов ему разрешено принимать соединения, поэтому использование синтаксиса Apache 2.4 Require local
ограничивает доступ, так что только ПК, на котором работает WAMPServer, то есть Apache, может подключаться к любой из этих сайтов.
Старайтесь не смешивать синтаксис Apache 2.2 и синтаксис Apache 2.4 вместе в одном определении. Так что не используйте
Order Allow,Deny
Allow from all
и
Require all granted
в том же определении. Вы используете Apache 2.4, поэтому используйте синтаксис Apache 2.4.
Если вы обнаружите, что хотите, чтобы другие ПК в вашей локальной сети могли видеть ваш сайт, например, напарника или детей и т.д., Вы можете добавить этот синтаксис к одному или нескольким определениям вашего виртуального хоста.
Разрешить только один другой компьютер на ваш сайт
Require local
Require ip 192.168.1.100
или 2 других компьютера
Require local
Require ip 192.168.1.100, 192.168.1.101
Или кому-либо в вашей локальной сети просто используйте первые 3 из 4 квартилей IP-адреса.
Require ip 192.168.1
Также избегайте использования синтаксиса, который разрешает доступ откуда угодно, т.е.
Require all granted <--Apache 2.4 syntax
or
Order Allow,Deny <-- Apache 2.2 syntax
Allow from all
Это может решить ваши проблемы в краткосрочной перспективе, но просто ждет, чтобы поймать вас через некоторое время, когда вы решите, что хотите показать свой сайт другу/клиенту/боссу. Если вы дойдете до стадии "Переадресация портов" своего маршрутизатора, так что мир будет включен в вашу сеть, что сделает ВСЕ ВАШИ САЙТЫ доступными всему миру.
Лучше изменить определение ОДНОГО виртуального хоста для ОДНОГО сайта, который вы хотите, чтобы люди видели для тестирования/хвастовства, с Require local
на Require all granted
и разрешить доступ к этому единственному сайту только из Интернета.
После внесения всех этих изменений не забудьте перезапустить Apache.
Также, если вы измените файл hosts, чтобы активировать chnages, вы должны либо перезагрузить компьютер, либо запустить их из командной строки командной строки, запущенной с параметром Runs as Administrator
.
net stop dnscache
net start dnscache
Если вы используете Windows 10, вышеприведенные команды dns больше не работают, вы должны сделать это вместо этого.
ipconfig /flushdns