一天中的好时光! 我在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设置来解决此问题?
答案 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 现在一切都很好!