RewriteEngine on 给出错误 403

Posted

技术标签:

【中文标题】RewriteEngine on 给出错误 403【英文标题】:RewriteEngine on gives error 403 【发布时间】:2011-12-01 19:29:25 【问题描述】:

索引文件存在并且有效。 当我使用 ONLY 行创建 .htaccess 文件时:

RewriteEngine On 

服务器上的任何页面都给我:

禁止访问!

您无权访问请求的对象。它是 服务器读保护或不可读。

如果您认为这是服务器错误,请联系网站管理员。 错误 403 mysite.com 2011 年 10 月 5 日星期三 22:25:25 Apache/2.2.3 (Linux/SUSE)

一些服务器信息:

加载的模块核心 prefork http_core mod_so mod_actions mod_alias mod_auth_basic mod_authn_file mod_authz_host mod_authz_groupfile mod_authz_default mod_authz_user mod_authn_dbm mod_autoindex mod_cgi mod_dir mod_env mod_expires mod_include mod_log_config mod_mime mod_negotiation mod_setenvif mod_ssl mod_suexec mod_userdir mod_rewrite mod_php5

Apache 版本:

SERVER_SOFTWARE Apache/2.2.3 (Linux/SUSE)

也这样做了:

Options FollowSymLinks

在 httpd.conf 的目录部分

日志只说明错误的事实,而不是原因:

89.112.xx.x - - [05/Oct/2011:22:32:34 +0200] "GET /info.php HTTP/1.1" 403 1040 "-" "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
::1 - - [05/Oct/2011:22:32:45 +0200] "GET / HTTP/1.0" 200 1 "-" "Apache/2.2.3 (Linux/SUSE) (internal dummy connection)"

感谢您的帮助!

【问题讨论】:

请查看以下链接。它会帮助你***.com/questions/22621643/… 【参考方案1】:

地点

Options +SymLinksIfOwnerMatch

作为 .htaccess 文件的第一行。这解决了我的问题。

【讨论】:

+FollowSymLinks 是重写引擎所必需的。如果您查看 apache docs 上的 Per-directory Rewrites,您将看到这一点。或者可以使用+SymLinksIfOwnerMatch,尽管我认为这一切都取决于你的apache配置,在性能和安全方面。 Options +FollowSymLinks 帮助了我。谢谢。 工作就像一个魅力......如果你也能解释原因,将不胜感激。【参考方案2】:

最可能的原因是您的主 conf 文件的权限受到限制。你有没有这样的一行:

<Directory /> 
    AllowOverride None 
</Directory>

在您的主 conf 文件中?这将阻止您使用 .htaccess 文件更改任何内容。

您可以在他们的网站上找到有关apache permissions 的更多信息。

【讨论】:

是的,有一行“AllowOverride None”,我已经删除它,重新启动 apache,但它仍然给我 403。这是当前目录部分: 选项 FollowSymLinks(这里是 AllowOverride无)命令拒绝,允许拒绝所有 不要删除 AllowOverride 行,而是将其更改为 ALL 或所需功能的适当子集。有关这些选项的更多信息,请访问 apache website 另外,您要确保没有其他目录声明会限制 conf 文件中某处的覆盖权限,并且启用了 mod_rewrite 扩展。【参考方案3】:

在 httpd.conf 中检查代码块。默认情况下,在 Mac 上它非常严格。如果它只是本地的并且你不太在意,你可以像这样打开它:

<Directory />
    Options All
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

这可能会有所帮助,或者可能是文件权限本身。 /var/log/apache2/error_log 和 /var/log/apache2/access_log 还可以为您提供更多关于正在发生的事情的详细信息。

【讨论】:

【参考方案4】:

感谢 Tarun 的回答,Options All 为我完成了这项工作:

<Directory "/path/to/apache/root"/>
    Options All
    ...
</Directory>

【讨论】:

以上是关于RewriteEngine on 给出错误 403的主要内容,如果未能解决你的问题,请参考以下文章

打开 RewriteEngine 会产生 403 错误——如何打开 FollowSymLinks?

.htaccess RewriteEngine 在 xampp 中导致 Unexpected 403 Forbidden http 响应代码

text 在RewriteEngine On之后,将此代码段添加到Joomla网站的.htaccess

mod_rewrite RewriteEngine On 不工作

apache_conf 强大的.htaccess片段,需要在最顶层使用RewriteEngine On

我的 Apache2 RewriteEngine On 和 AllowOverride All 更改是不是安全?