Jas*_*n M 12 php mysql apache wamp virtualhost
我使用的是wamp版本2.5我的Apache是2.4.9 PHP:5.5.12 MySQL:5.6.17
我有这些配置:
在我的 httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Run Code Online (Sandbox Code Playgroud)
在我的 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>
Run Code Online (Sandbox Code Playgroud)
在我的 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
Run Code Online (Sandbox Code Playgroud)
我尝试使用此URL访问我的项目:http://www.mysite.dev/
但我正在Server not found error
尝试使用它来访问它www.mysite.dev
,http://mysite.dev
但仍然运气不好!
我的虚拟主机之前正在工作,但我不确定为什么它现在不工作.一些奇怪的事情正在发生.
我不确定发生了什么.任何想法将不胜感激!
谢谢!
Rig*_*lly 18
首先,您需要从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>
Run Code Online (Sandbox Code Playgroud)
第二个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
Run Code Online (Sandbox Code Playgroud)
现在,在系统上实际存在的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>
Run Code Online (Sandbox Code Playgroud)
该<Directory>....</Directory>
部分中的<VirtualHost>....</VirtualHost>
部分告诉Apache允许哪些IP地址接受连接,因此使用Apache 2.4语法Require local
限制访问,以便只有运行WAMPServer即PC的PC才能连接到这些站点中的任何一个.
避免在同一定义中将Apache 2.2语法和Apache 2.4语法混合在一起.所以不要使用
Order Allow,Deny
Allow from all
Run Code Online (Sandbox Code Playgroud)
和
Require all granted
Run Code Online (Sandbox Code Playgroud)
在同一个定义中.您正在使用Apache 2.4,因此请使用Apache 2.4语法.
如果您发现要允许本地网络中的其他PC查看您的站点(即工作伙伴或孩子等),则可以将此语法添加到一个或多个虚拟主机定义中.
只允许一台其他PC进入您的网站
Require local
Require ip 192.168.1.100
Run Code Online (Sandbox Code Playgroud)
或其他2台PC
Require local
Require ip 192.168.1.100, 192.168.1.101
Run Code Online (Sandbox Code Playgroud)
或者对于本地网络上的任何人,只需使用IP地址的4个四分位中的前3个.
Require ip 192.168.1
Run Code Online (Sandbox Code Playgroud)
还要避免使用允许从任何地方访问的语法,即
Require all granted <--Apache 2.4 syntax
or
Order Allow,Deny <-- Apache 2.2 syntax
Allow from all
Run Code Online (Sandbox Code Playgroud)
它可以在短期内解决您的问题,但只是在您决定要向朋友/客户/老板展示您的网站时等待.如果你进入Port Forwarding的阶段,那么路由器将允许世界进入你的网络,这将导致你所有的网站都可供世界使用.
更好地改变一个虚拟主机定义你希望人们能看到测试/从吹牛一个网站Require local
来Require all granted
,只允许单个站点是从互联网接入.
完成所有这些更改后,请记住重新启动Apache.
此外,如果您更改hosts文件以使chnages处于活动状态,则应该重新启动或从命令行的命令行运行这些命令Runs as Administrator
.
net stop dnscache
net start dnscache
Run Code Online (Sandbox Code Playgroud)
由于Google收购了.dev gTLD,因此不再容易使用.dev开发网站,最好的方法是将您的开发域名重命名为.local或您喜欢的内容.
后台发生的情况是本地DNS服务器将浏览器重定向到127.0.53.53(打开cmd> 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.
Jan*_*thy -2
在你的 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>
Run Code Online (Sandbox Code Playgroud)
重新启动您的 wamp 服务器并在浏览器上输入像 mysite.dev/ 这样的 url。希望它能帮助你。谢谢。