我不确定为什么会发生这种情况,因为我对Apache不是很了解。下面是我的VirtualHost的副本。
如果这给了任何额外的帮助,如何让它的工作,我正试图运行一个CakePHP网站。我知道网站本身没有问题,因为我有另一个位置,我管理的代码,可以让它通过Apache本地运行那里。
<virtualhost *:80>
DocumentRoot "C:/sites/sitename"
ServerName dev.sitename.com
ErrorLog "logs/sitename.com-error.log"
CustomLog "logs/sitename.com-access.log" common
<directory "C:/sites/sitename">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</directory>
</virtualhost>
我在Apache 2.0和Win7sp1上运行这个
我从来没有找到真正的解决方案,使用我所走的路线。我下载了一个新的WAMP,很快就能让一切正常运行,没有问题。
为了阻止 apache显示目录列表,您需要禁用 indexes
。此外,最好禁用MultiViews,因为这将启用内容协商,这可能会产生不必要的副作用
将选项改为;
Options -Indexes FollowSymLinks
然后,检查.htaccess
文件是否存在于您的webroot (C:/Sites/Sitename
)中,因为该文件用于启用mod_rewrite
首先,确保DocumentRoot
指向应用程序的正确目录;
CakePHP的标准目录结构如下;
app
/Config
/Controllers
/Views
......
/webroot
lib
/Cale
plugins
DocumentRoot
应该指向你的' app/webroot'目录,该目录包含所有'public'文件。
将虚拟主机中的路径/目录更改为该目录并重新启动Apache。
如果你仍然得到403错误,把你在浏览器中访问的URL改为this;
http://mywebsite.com/index.php
如果工作,检查.htaccess
文件是否存在于该目录中,并且mod_rewrite
已安装在Apache中。
根据"thaJetzah"的回答(抱歉,还不能评论:))
403 Forbidden比有文件夹的索引要好,因为现在你可以看到logs/sitename.com-error.log日志,希望它能告诉你为什么它给出了403。
只是为了确保:index.php在文件夹"C:/sites/sitename"?
如果您不能像这样隔离错误,那么在这里发布error.log的输出,当您尝试访问该页面时,它会给您403。
如果你运行的是Ubuntu