我使用的是2.5版的wamp 我的Apache是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 webmaster@dummy-host.example.com
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 webmaster@dummy-host2.example.com
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 webmaster@dummy-host.example.com
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
我尝试使用以下网址访问我的项目:http://www.mysite.dev/
但是我收到Server not found error
我尝试使用www.mysite.dev
http://mysite.dev
访问它但是运气不好!
我的虚拟主机之前正在工作,但我不确定它为什么现在不能正常工作。发生了一些奇怪的事情。
我不确定发生了什么。任何想法将不胜感激!
谢谢!
答案 0 :(得分:16)
首先,您需要从vhost-httpd.conf文件中删除示例 dummy 定义。它们仅作为示例仅用于开始使用语法,并且不应保留在活动conf/extra/httpd-vhosts.conf
中,因为它们指向不存在的文件夹。
所以从文件中删除这两个定义:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
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 webmaster@dummy-host2.example.com
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版本。浏览器可以任意使用,因此您需要两者,但如果两者在PC上实际处于活动状态,则可能优先使用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
限制访问,以便只运行PC WAMPServer即Apache可以连接到任何这些站点。
避免在同一定义中将Apache 2.2语法和Apache 2.4语法混合在一起。所以不要使用
Order Allow,Deny
Allow from all
和
Require all granted
在同一个定义中。您正在使用Apache 2.4,因此请使用Apache 2.4语法。
如果您发现要允许本地网络中的其他PC看到您的网站即工作伙伴或孩子等,则可以将此语法添加到一个或多个虚拟主机定义中。
只允许一台其他PC进入您的网站
Require local
Require ip 192.168.1.100
或其他2个PC
Require local
Require ip 192.168.1.100, 192.168.1.101
或者对于本地网络上的任何人,只需使用IP地址的4个四分位中的前3个。
Require ip 192.168.1
还要避免使用允许从任何地方访问的语法,例如
Require all granted <--Apache 2.4 syntax
or
Order Allow,Deny <-- Apache 2.2 syntax
Allow from all
它可以在短期内解决您的问题,但只是在您决定要向朋友/客户/老板展示您的网站时等待。如果您进入Port Forwarding的路由器,那么路由器将允许您的网络进入您的网络,这将导致所有您的网站向全世界提供。
最好更改您希望人们从Require local
到Require all granted
进行测试/吹牛的ONE网站的ONE Virtual Host Definition,并且只允许从互联网访问该网站。< / p>
完成所有这些更改后,请记住重新启动Apache。
此外,如果您更改hosts文件以使chnages处于活动状态,则应该从命令窗口的命令行重启或运行这些命令,这些命令是Runs as Administrator
选项启动的。
net stop dnscache
net start dnscache
答案 1 :(得分:5)
由于Google收购了.dev gTLD,因此不再容易使用.dev开发网站,最好的方法是将您的开发域名重命名为.local或您喜欢的内容。
后台发生的情况是本地DNS服务器将浏览器重定向到127.0.53.53(打开cmd&gt; nslookup yourdomain.dev),以便通知最终用户正在获取.dev gTLD。由于hosts文件中的.dev域设置为127.0.0.1,因此显示连接被拒绝。
您可以在hosts文件中将127.0.0.1更改为127.0.53.53,并查看浏览器错误从ERR_CONNECTION_REFUSED更改为ERR_ICANN_NAME_COLLISION。
答案 2 :(得分:2)
我通过取消注释Apache文件夹中httpd.conf中的某些行来解决同样的问题。
取消注释以下行:
Include conf/extra/httpd-vhosts.conf
LoadModule vhost_alias_module modules/mod_vhost_alias.so
保存文件并重新启动Apache,它会起作用。 非常感谢这个家伙: https://john-dugan.com/wamp-vhost-setup/
答案 3 :(得分:0)
在httpd.conf
中查看此模块未注释答案 4 :(得分:0)
对于这个问题,我来得太晚了,我做了@RiggsFolly提到的所有事情,但是我改变了一件事情,使它可以立即工作。我将ERROR
更改为WARNING
,因为保留了.dev。希望对您有帮助
答案 5 :(得分:-1)
在你的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服务器并在你的浏览器上输入类似mysite.dev/的url。 希望它会对你有所帮助。 谢谢。