2012-04-09 113 views
6

我试图在我的虚拟主机(Dreamhost)上安装Recess PHP framework。它包括以下的.htaccess:.htaccess RewriteRule导致403 Forbidden

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

此作品在我的机器(在Windows 7 XAMPP 1.7.7)上正常,但导致在403禁止错误的一些文件我的虚拟主机。所有目录权限设置为755,并且所有文件权限都设置为644. PHP在拥有文件的同一用户下运行。

以下网址导致403S:

  • 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

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

回答

8

事实证明,我需要改变线路:

Options FollowSymLinks 

到:

Options +FollowSymLinks 
+0

太棒了!我不会觉得这很容易,你为我节省了很多时间。先谢谢你! – orafaelreis 2014-05-06 10:43:36

+0

非常感谢!我现在可以放弃疯狂的药片。 – freeworlder 2015-08-08 13:00:35

2

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

虽然我承认我没有国防部重写专家,看起来像第一行是指导所有的请求request_file.html,那么第2行,如果该文件不存在,在网上调出boostrap.php 3.

你的问题可能在于boostrap.php,看看在这个脚本中发生了什么,以及如何处理请求。调试器可能在该步骤中很有用。虽然你可能会得到这个工作,但它似乎可能不是最佳的,因为它是。例如,我相信通常有一个规则可以避免将.sg,.jpg .css指向您的路由脚本。这样的事情:

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

这样可以避免php处理这些类型文件的请求的开销。甚至还有更多的事情要考虑强大的应用程序生产使用,只是调整你的规则,所以一切都路由适当,事情应该没问题。