[英].htaccess RewriteRule causing 403 Forbidden
我正在尝试在我的 web 主机 (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)但在我的 web 主机上的某些文件上导致 403 禁止错误。 所有目录权限都设置为 755,所有文件权限都设置为 644。PHP 在拥有这些文件的同一用户下运行。
以下 URL 会导致 403:
以下网址不会:
什么会导致这种情况发生?
事实证明,我需要更改行:
Options FollowSymLinks
到:
Options +FollowSymLinks
不熟悉该框架,但看起来其他地方有一些行或者可能需要调整。
虽然我承认不是 mod 重写专家,但看起来第一行是将所有请求定向到 request_file.html,然后在第 2 行如果文件不存在,它会在第 3 行调用 boostrap.php。
您的问题可能出在 boostrap.php 中,查看该脚本中发生了什么以及如何处理请求。 调试器可能在该步骤中很有用。 尽管您可以使它起作用,但在我看来它可能不是最佳选择。 例如,我相信通常有一个规则集可以避免将 havings.gif、.jpg.css 定向到您的路由脚本。 像这样:
RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|css|js)
这避免了让 php 处理对这些类型文件的请求的开销。 对于稳健的应用程序生产使用,甚至还有更多的事情需要考虑,只需调整您的规则,以便一切都正确路由并且一切都应该没问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.