7

我正在尝试在我的网络主机(Dreamhost)上安装Recess PHP 框架。它包括以下 .htaccess:

Options FollowSymLinks
RewriteEngine On
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ bootstrap.php [QSA,L]

这在我的机器上运行良好(Windows 7 上的 XAMPP 1.7.7)但在我的网络主机上的某些文件上导致 403 Forbidden 错误。所有目录权限设置为 755,所有文件权限设置为 644。PHP 在拥有文件的同一用户下运行。

以下 URL 会导致 403:

  • http://test.dd.moofz.com/
  • http://test.dd.moofz.com/recess-conf.php
  • http://test.dd.moofz.com/index.php
  • http://test.dd.moofz.com/bootstrap.php
  • http://test.dd.moofz.com/MIT-LICENSE

以下网址不会:

  • http://test.dd.moofz.com/.gitignore
  • http://test.dd.moofz.com/httpd_logo_wide.gif
  • http://test.dd.moofz.com/README.textile
  • http://test.dd.moofz.com/the-book-of-recess.pdf

什么会导致这种情况发生?

4

2 回答 2

9

事实证明,我需要改变这一行:

Options FollowSymLinks

到:

Options +FollowSymLinks
于 2012-04-10T21:55:38.213 回答
2

不熟悉该框架,但看起来其他地方有一些行,或者可能需要调整。

虽然我承认我不是 mod 重写专家,但看起来第一行是将所有请求定向到 request_file.html,然后在第 2 行,如果文件不存在,它会在第 3 行调用 boostrap.php。

您的问题可能出在 boostrap.php 中,请查看该脚本中发生了什么以及如何处理请求。调试器在该步骤可能很有用。虽然你可以让它工作,但在我看来它可能不是最佳的。例如,我相信通常有一个规则集可以避免将 .gif、.jpg .css 定向到您的路由脚本。像这样的东西:

RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|css|js)

这避免了让 php 处理对这些类型文件的请求的开销。对于健壮的应用程序生产使用,甚至需要考虑更多的事情,只需调整您的规则,以便一切都正确路由并且一切都应该没问题。

于 2012-04-09T03:33:06.420 回答