2011-10-05 84 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也可以讓你更詳細地瞭解正在發生的事情。