RewriteEngine on给出错误403

Dmi*_*try 19 apache mod-rewrite httpd.conf

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

RewriteEngine On 
Run Code Online (Sandbox Code Playgroud)

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

访问被禁止!

您无权访问请求的对象.它受读保护或服务器无法读取.

如果您认为这是服务器错误,请与网站管理员联系.错误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
Run Code Online (Sandbox Code Playgroud)

在httpd.conf的Directory部分中

Log说的只是错误的事实,而不是原因:

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)"
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

小智 37

地点

Options +SymLinksIfOwnerMatch
Run Code Online (Sandbox Code Playgroud)

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

  • 重写引擎需要`+ FollowSymLinks`.如果你查看[apache docs](http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html)上的Per-directory Rewrites,你会看到这个.或者可以使用`+ SymLinksIfOwnerMatch`,虽然我认为所有这些都取决于你的apache配置,在性能和安全性方面. (5认同)
  • 工作就像一个魅力...如果你能解释原因,将不胜感激. (3认同)

Jef*_*ins 2

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

<Directory /> 
    AllowOverride None 
</Directory>
Run Code Online (Sandbox Code Playgroud)

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

您可以在其网站上找到有关apache 权限的更多信息。