无法在Windows 7下的apache2上配置虚拟主机 - 返回403错误

时间:2012-03-04 08:05:35

标签: apache2 virtualhost hosts

一天中的好时光! 我在Windows 7上成功使用了apache + php,但现在我决定制作几个虚拟主机。我添加到apache config的末尾这样的部分:

<virtualhost> 
ServerAdmin yourmail@domain.com 
ServerName jiifirst 
DocumentRoot "c :/ apache2/web/jiifirst/htdocs" 
ScriptAlias ​​/ cgi-bin / "c :/ apache2/web/jiifirst/cgi-bin /" 
ErrorLog c :/ apache2 / web / jiifirst / logs / error.log 
CustomLog c :/ apache2/web/jiifirst/logs/access.log common 
</ virtualhost>

然后创建相应的文件夹。但是,当我尝试拨打http://127.0.0.2/test.php时 出现这样的错误:

  

错误禁止   您无权访问此服务器上的/ test.php。

同时我仍然可以毫无问题地访问localhost。我还更改了文件夹的权限。我应该更改哪些apache设置来解决此问题?

2 个答案:

答案 0 :(得分:0)

首先,配置中的所有空格是什么?例如。 "c :/ apache2/web/jiifirst/htdocs"。那不是你真正的配置;你是怎么剪切和粘贴的?

其次,您正在与服务器http://127.0.0.2通话。是的,这是服务器的IP地址,但在HTTP(至少1.1及更高版本)中,地址不仅仅意味着识别机器上的网卡。它标识了一个网站域。地址进入协议,Web服务器可以决定向客户端提供哪个网站(在相同的IP地址)。

您的VirtualHost定义了一个域名为jiifirst的网站。这与基于IP的访问127.0.0.2不匹配。

但是,无论如何仍然可以匹配VirtualHost。您的VirtualHost缺少地址和端口匹配字段,但如果它看起来像这样:

<VirtualHost *:80>

这意味着VirtualHost可以将来自任何地址的基于IP的请求与端口80匹配。如果Apache无法在任何VirtualHost条目中找到主机名的完全匹配, (并且您没有特殊的默认VirtualHost),它将按照与地址匹配的外观顺序选择第一个。

<VirtualHost>上缺少地址可能是事情没有发生的原因(如果确实是真实的话,可能还有空格。)

答案 1 :(得分:0)

我的问题的真正解决方案是在

部分

   选项FollowSymLinks    AllowOverride无    命令拒绝,允许    拒绝所有人

我只需将Deny从所有人改为Allow 现在一切都很好!