2011-10-05 87 views
17

索引文件存在并起作用。 当我创建的唯一行.htaccess文件:RewriteEngine on给出错误403

RewriteEngine On 

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

禁止访问!

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

如果您认为这是服务器错误,请与网站管理员联系。 错误403 mysite.com星期三10月5日22时25分25秒2011的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)" 

感谢您的帮助!

+0

请检查以下链接。它会帮助你 http://stackoverflow.com/questions/22621643/turning-rewriteengine-on-creates-403-error-how-to-turn-on-followsymlinks#answer-22623427 –

回答

2

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

<Directory /> 
    AllowOverride None 
</Directory> 

在你的主要conf文件中?这会阻止你使用.htaccess文件基本上改变任何东西。

你可以在他们的网站上找到更多关于apache permissions的内容。

+0

是的,有行有“AllowOverride无”,我已经删除了,重新启动Apache的,但它仍然给了我403.下面是当前目录部分: 有FollowSymLinks (这里是设置AllowOverride无) 订单拒绝,允许 所有拒绝 Dmitry

+0

而不是删除AllowOverride行将其更改为ALL或您想要的功能的适当子集。在[apache网站]上有更多关于这些选项的信息(http://httpd.apache.org/docs/1.3/mod/core.html#allowoverride) –

+0

另外,你想确保你没有另一个目录声明限制覆盖权限在你的conf文件的某处,并且启用了mod_rewrite扩展。 –

30

广场

Options +SymLinksIfOwnerMatch 

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

+5

'+ FollowSymLinks'是重写引擎所必需的。如果你在[apache docs](http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html)的Per-directory Rewrites中查看,你会看到这个。或者'+ SymLinksIfOwnerMatch'可以使用,但我认为所有这些都取决于您的apache配置,在性能和安全性方面。 – upful

+1

'Options + FollowSymLinks'帮助了我。谢谢。 –

+3

工作就像一个魅力...如果你还可以解释为什么,将不胜感激。 –

1

检入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也可以让你更详细地了解正在发生的事情。