WAMP虚拟主机不能正常工作

我正在使用一个wamp版本2.5我的Apache是​​2.4.9 PHP:5.5.12 MySQL:5.6.17

我有这些configuration:

在我的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 

我试图访问我的项目使用这个URL: http://www.mysite.dev/ //www.mysite.dev/但我得到一个Server not found error我试图访问它使用www.mysite.devhttp://mysite.dev但仍然有运气不好!

我的虚拟主机之前工作,但我不知道为什么现在不工作。 一些奇怪的事情正在进行。

我不知道发生了什么事。 任何想法将不胜感激!

谢谢!

首先,您需要从vhost-httpd.conf文件中删除示例虚拟定义。 他们只是为了让您开始使用语法,并不应将其保留在活动的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版本定义。 浏览器可以任意使用,所以你需要两个,但可能会使用IPV6网络优先于IPV4,如果两者实际上在您的PC上活动。

 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> 

<VirtualHost>....</VirtualHost>部分中的<Directory>....</Directory>部分告诉Apache允许哪些IP地址接受连接,所以使用Apache 2.4语法Require local限制访问这样只有运行WAMPserver的PC才能连接到这些站点的任何一个。

避免在相同的定义中混合使用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 

或者只要使用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 

它可能会在短期内解决您的问题,但只是在稍后您决定要将您的网站展示给朋友/客户/老板时等待您。 如果你到了端口转发的阶段,那么你的路由器将被允许进入你的网络,这将导致你的网站全世界都可以使用。

更好地更改ONE站点的ONE虚拟主机定义您希望人们看到测试/吹牛从Require local Require all granted ,只允许该单一站点从互联网访问。

一旦你做出所有这些改变,记得重启Apache。

另外,如果更改主机文件以使chnages处于活动状态,则应重新启动或从命令窗口的命令行中运行这些命令,该命令窗口开始Runs as Administrator选项。

 net stop dnscache net start dnscache 

我通过在Apache文件夹的httpd.conf中取消注释一些行来解决同样的问题。

取消下面的注释:

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

保存文件并重新启动你的Apache,它将工作。 非常感谢这个人: https : //john-dugan.com/wamp-vhost-setup/

看看这个在httpd.conf中没有注释的模块

  • proxy_module
  • proxy_http_module

以下为我工作

 <VirtualHost *:80> DocumentRoot "G:\project\test.dev" serverAdmin test@gmail.com 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> 

试试这个你的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。 希望它会帮助你。 谢谢。