WAMP Virtual Host не работает

Я использую Wamp версии 2.5
Мой апач 2.4.9
PHP: 5.5.12
MySQL: 5.6.17

У меня есть эти конфигурации:

На моем httpd.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

На моем G:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhost.conf

# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
##
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#<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><VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "g:/wamp/www"ServerName localhost
ErrorLog "logs/localhost-error.log"CustomLog "logs/localhost-access.log" common
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "g:\wamp\www\mysite\public"ServerName mysite.dev
</VirtualHost>

На моем c:\Windows\System32\Drivers\etc\hosts

# localhost name resolution is handled within DNS itself.
127.0.0.1   localhost
127.0.0.1   mysite.dev
#   ::1     localhost

Я пытаюсь получить доступ к своему проекту, используя этот URL: http://www.mysite.dev/ НО Я получаю Server not found error Я попытался получить доступ к нему с помощью www.mysite.dev , http://mysite.dev но все еще не повезло!

Мой виртуальный хост работал раньше, но я не уверен, почему он не работал сейчас. Происходят странные вещи.

Я не уверен, что происходит. Любые идеи будут с благодарностью!

Спасибо!

9

Решение

Сначала нужно удалить пример фиктивный определения из вашего файла 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
16

Другие решения

Из-за того, что Google приобрел gTLD .dev, иметь сайты разработки .dev больше невозможно, лучший способ смягчить это просто переименовать ваш домен разработки в .local или что-то, что вы предпочитаете.

В фоновом режиме происходит то, что локальный DNS-сервер перенаправляет браузер на 127.0.53.53 (откройте cmd> nslookup yourdomain.dev), чтобы информировать конечных пользователей о приобретении gTLD .dev. Поскольку домен .dev в файле hosts имеет значение 127.0.0.1, это указывает на отказ в соединении.

Вы можете изменить 127.0.0.1 на 127.0.53.53 в файле hosts и увидеть, что ошибка браузера изменяется с ERR_CONNECTION_REFUSED на ERR_ICANN_NAME_COLLISION.

5

Следующее работает на меня

<VirtualHost *:80>
DocumentRoot "G:\project\test.dev"ServerAdmin [email protected]
ServerName test.dev
ErrorLog "logs/test.dev-error.log"CustomLog "logs/test.dev-access.log" common
<Directory "G:\project\test.dev">
AllowOverride All
Options Indexes FollowSymLinks
Require local
</Directory>
</VirtualHost>
2

Я исправляю ту же проблему, раскомментируя некоторые строки в httpd.conf в папке Apache.

Раскомментируйте строки ниже:

Include conf/extra/httpd-vhosts.conf
LoadModule vhost_alias_module modules/mod_vhost_alias.so

Сохраните файл и перезапустите ваш Apache, и он будет работать.
Большое спасибо этому парню:
https://john-dugan.com/wamp-vhost-setup/

2

Проверьте это модули без комментариев в httpd.conf

  • proxy_module
  • proxy_http_module
0

попробуйте это на вашем apache httpd.config файле:

    <VirtualHost *:80>
ServerName mysite.dev
DocumentRoot "g:\wamp\www\mysite\public"SetEnv APPLICATION_ENV "development"
<Directory "g:\wamp\www\mysite\public">
DirectoryIndex index.php
Options All Includes Indexes
Options All Indexes FollowSymLinks
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>

перезапустите сервер wamp и вставьте в браузер URL-адрес типа mysite.dev/.
надеюсь, это поможет вам.
благодарю вас.

-1
По вопросам рекламы [email protected]