簡體   English   中英

Apache RewriteEngine On 導致 403 錯誤

[英]Apache RewriteEngine On causes 403 error

我有一個運行 Centos 6.6 和 Apaches 2.2.x 的 Linux 機器出於某種未知原因,打開重寫引擎會導致 403 錯誤(無論是否添加重寫規則都會發生這種情況)。

我花了幾個小時研究這個,並根據我在很多地方找到的建議對我的配置進行了更改,但仍然一無所獲。

目前在我的 .htaccess 我有這個:

<IfModule mod_rewrite.c>  
Options +FollowSymLinks  
RewriteEngine On  
</IfModule>

在虛擬主機的指令中,我有這個:

DocumentRoot /var/www/html/example.uk  
<Directory /var/www/html/example.uk>  
Options Indexes FollowSymLinks MultiViews  
AllowOverride All
Order allow,deny
allow from all
</Directory>
ServerName example.uk  
ServerAlias www.example.uk

(這似乎適用於 Debian 機器,但不適用於我的 Centos 機器。)

在我的 httpd.conf 我已經改變了

允許覆蓋無

允許覆蓋所有

我的 httpd.conf 還包含LoadModule rewrite_module modules/mod_rewrite.so

錯誤日志說:

選項 FollowSymLinks 或 SymLinksIfOwnerMatch 關閉,這意味着禁止 RewriteRule 指令:/var/www/html/example.uk

現在,我之前已經將SymLinksIfOwnerMatch添加到指令中,但它沒有解決問題。

我遵循了這個,一切似乎都應該進行。

當 Apache 沒有執行權限時會發生這種情況

/var
/var/www
/var/www/html
/var/www/html/example.uk  

跑:

chmod o+x /var /var/www /var/www/html /var/www/html/example.uk 

由於 apache 版本 >= 2.4 指令

Order allow,deny
allow from all

導致全局 403,如果您檢查您是 apache 的日志,請確保這一點:

[Tue May 05 11:54:32.471679 2015] [authz_core:error] [pid 9497] [client 127.0.0.1:35908] AH01630:客戶端被服務器配置拒絕:/path/to/web/

評論指令Order並添加Require all granted如下:

 Require all granted
 #Order allow,deny
 #allow from all

希望這有幫助。

編輯 :

來自 apache 的解釋此行為由新模塊mod_authz_host

有關可用限制列表(ip、主機等) http://httpd.apache.org/docs/2.4/en/mod/mod_authz_host.html

您應該從 htaccess 中刪除此行

Options +FollowSymLinks

您已經在 apache vhost 文件中擁有它。 此外,如果您要打開 mod_rewrite 或沒有必要打開它,則應該添加規則。

Apache 2.4 的另一種可能性是由Options -FollowSymlinks引起的,它也會引發 403 錯誤並生成以下日志:

AH00670:選項 FollowSymLinks 和 SymLinksIfOwnerMatch 都關閉,因此 RewriteRule 指令也被禁止,因為它具有類似的繞過目錄限制的能力

原始帖子中並非如此,但如果出現這種情況,您需要使用以下行重新啟用 FollowSymLinks:

Options +FollowSymLinks

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM