虚拟主机 - 全部重定向到 WAMP 本地主机“主页”页面
Posted
技术标签:
【中文标题】虚拟主机 - 全部重定向到 WAMP 本地主机“主页”页面【英文标题】:Virtual Hosts - all redirect to the WAMP localhost 'home' page 【发布时间】:2014-02-17 17:31:28 【问题描述】:我已经在我的 Windows 8 PC 上安装了最新版本的 WAMP - 我似乎无法让多个虚拟主机工作,我加载的每个本地 URL 都会显示 WAMP 主页。
谁能解释我做错了什么?
// My hosts file
127.0.0.1 localhost
127.0.0.1 client1.localhost
127.0.0.1 client2.localhost
我的 WAMP 目录中有两个文件夹,'client1' 和 'client2' 显然每个文件夹都会关联上面主机文件中的 client1 和 client2。
// My virtual hosts file
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:\wamp\www"
</VirtualHost>
<VirtualHost *:80>
ServerName client1.localhost
DocumentRoot "C:\wamp\www\client1"
<Directory "C:\wamp\www\client1">
allow from all
order allow,deny
AllowOverride All
</Directory>
DirectoryIndex index.html index.php
</VirtualHost>
<VirtualHost *:80>
ServerName client2.localhost
DocumentRoot "C:\wamp\www\client2"
<Directory "C:\wamp\www\client2">
allow from all
order allow,deny
AllowOverride All
</Directory>
DirectoryIndex index.html index.php
</VirtualHost>
【问题讨论】:
是否引用了hosts文件? 抱歉,我不确定.. 引用的意思是什么? 【参考方案1】:您的主机文件看起来不错,但您的虚拟主机定义不太好。
如果您更改您的hosts
文件,您可以通过使用Runs as Administrator
启动的命令窗口或简单重启来重新加载Windows 缓存:-
net stop "DNS Client"
然后当它完成时做
net start "DNS Client"
由于服务名称中有空格,所以需要引号!!
DNS 客户端服务缓存访问的域名,并在启动时预加载存在于HOSTS
文件中的域名,或者如果您按上述方式重新启动服务。
在调试新的 vhost 定义时,请记住,如果您尝试访问的定义有问题,Apache 将始终默认为 vhost 定义文件中定义的第一个 vhost。因此,如果这就是您最终到达的地方,即 WAMP 主页,您可以假设您在定义该虚拟主机时犯了一个错误。
这也意味着,如果你用Require local
之类的东西定义第一个虚拟主机定义,你的系统上的随机黑客也应该被发送到那里,如果它的安全设置为Require local
,黑客应该收到一个 404 错误可能会阻止进一步的黑客攻击。
// My virtual hosts file
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:\wamp\www"
<Directory "C:\wamp\www">
AllowOverride All
# never want to allow access to your wamp home page area to anyone other than This PC
# plus us the Apache 2.4.x syntax and not the 2.2 syntax
Require local
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName client1.localhost
DocumentRoot "C:\wamp\www\client1"
<Directory "C:\wamp\www\client1">
AllowOverride all
# use Apache 2.4 syntax to all access to your internal network only
Require ip 192.168.0
# Or if you really want to give access to the whole internet uncomment this and comment the previous line
#Require all granted
</Directory>
DirectoryIndex index.html index.php
</VirtualHost>
<VirtualHost *:80>
ServerName client2.localhost
DocumentRoot "C:\wamp\www\client2"
<Directory "C:\wamp\www\client2">
AllowOverride all
# use Apache 2.4 syntax to all access to your internal network only
Require ip 192.168.0
# Or if you really want to give access to the whole internet uncomment this and comment the previous line
#Require all granted
</Directory>
DirectoryIndex index.html index.php
</VirtualHost>
如果您实际上并不希望允许全世界访问这些客户端站点,但您确实希望能够从内部网络上的其他 PC 访问该站点,那么更好的访问机制是使用 @987654329 @。请注意仅使用子网的前 3 个四分位数(您的可能不是 192.168.0,但很多路由器默认使用该值。首先检查您的子网)
此外,如果您确实希望全世界都能看到这些客户端站点,那么您还必须Port Forward
您的路由器。
另外,如果您不打算让全世界都可以访问这些网站,而只是听从了不好的建议,那么对所有这些网站的更安全的定义是使用Require local
,因此您只能访问它们来自运行 WAMP 的 PC。
WAMPServer 2.4,我假设你的意思是当你说你正在运行最新版本的 WAMPServer 时,实际上改变了你可以包含虚拟主机定义的方式。好吧,实际上它包含了一种新方式,并保留了旧方式。
因此,要包含虚拟主机定义,您可以执行以下两件事之一:-
1。
将您的 vhost 定义放入文件 \wamp\bin\apache\apache2.4.4\conf\extra\httpd-vhosts.conf and then in the
httpd.conf 文件中取消注释此行(它靠近 conf 文件的底部。
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
删除Include
行前面的#
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
2。
将您的虚拟主机定义放入 \wamp\vhost
文件夹中的“您喜欢的任何名称”的文件中。
现在httpd.conf
文件底部有一行写着IncludeOptional "d:/wamp/vhosts/*"
这将包括该文件夹中的任何文件,如果它是虚拟主机定义,它将应用于配置。这是 Apache 2.4 的一个新命令,我相信它只适用于 Apache 2.4.x 安装。
【讨论】:
哇.. 那里有很多信息,伙计,不错的一个 :) 我不在家,所以不能尝试你的提示,直到稍后再次感谢 :) 感谢您为回答这个问题所做的努力,非常感谢本网站上像您这样的用户。 记得取消注释包含!!我花了很多时间才弄清楚【参考方案2】:我按照本指南进行操作,效果很好
我不得不改变路径...
<VirtualHost *:80>
ServerAdmin emailaddress@domain.com
DocumentRoot "c:\wamp\www\client1"
ServerName client1.localhost
ErrorLog "logs/client1.log"
CustomLog "logs/client1-access.log" common
</VirtualHost>
除此之外.. 我发现这是使用 WAMP 的虚拟主机的一个很好的快速指南 http://www.techrepublic.com/blog/smb-technologist/create-virtual-hosts-in-a-wamp-server/#
【讨论】:
【参考方案3】:尝试像这样将您的客户端文件夹放在 C:\wamp\www\ 下 C:\wamp\www\client1 和 C:\wamp\www\client2
编辑
如果还是不行试试这个 使用 client1.dev 而不是 client1.localhost 更改您的主机文件,然后在您的 Virtualhost 设置中放置一个 Servername,如下所示
<VirtualHost *:80>
DocumentRoot "F:\www\client1"
ServerName client1.dev
ServerAlias client1.dev www.client1.dev
Options Indexes FollowSymLinks
<Directory "F:\www\client1">
AllowOverride All
Order Deny,Allow
</Directory>
</VirtualHost>
您必须重新启动才能使 hosts 文件中的更改生效
【讨论】:
是的 - 我现在修复了,虽然 WAMP 重启后同样的问题仍然存在 尝试重新启动系统而不是重新启动 我的电脑重启后仍然没有乐趣?我不在家,所以直到今晚晚些时候才能尝试任何东西.. 您是否检查了我的编辑帖子并更改了虚拟主机设置? 今晚晚些时候我会试一试 - 感谢 touch wood,它会起作用 :)【参考方案4】:首先,出于安全考虑,您的目录结构不应超过www
文件夹。
- c:\wamp\www (home)
-c:\wamp\www\client1 (client1)
-c:\wamp\www\client2 (client2)
第二次在虚拟主机中更改需要reload
,但在您的情况下,您必须执行restart
,因为wamp
不提供reload
。
【讨论】:
oops - 我将其修复为将 www 放在路径中,但在 apache 重启后仍然存在同样的问题Virtual Host
没有理由应该位于 \wamp\www
文件夹下方。事实上,如果做得好,最好将虚拟主机站点完全放在该文件夹结构之外。那么您在每个站点上放置的安全性与 wamp 默认安全性完全分开
WAMP 服务器 确实 提供了一个简单的机制来重新加载服务。 Apache 和 mysql 或 Apache 或 MySQL 单独。左键单击 wampmanager 并查看菜单选项。以上是关于虚拟主机 - 全部重定向到 WAMP 本地主机“主页”页面的主要内容,如果未能解决你的问题,请参考以下文章