我正在使用一个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.dev
, http://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中没有注释的模块
以下为我工作
<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。 希望它会帮助你。 谢谢。