.htaccess mod переписать 500 внутренних ошибок сервера из-за слишком большого количества внутренних перенаправлений с LimitInternalRecursion


Всякий раз, когда я размещаю свой файл.htaccess в своем веб-каталоге, я получаю 500 внутренних ошибок сервера и в файле error.log с указанием:

[Sat Jan 21 13:46:07 2012] [error] [client xx.xx.xxx.xx] Request exceeded the limit
of 10 internal redirects due to probable configuration error. 
Use 'LimitInternalRecursion' to increase the limit if necessary. 
Use 'LogLevel debug' to get a backtrace.

Мой файл .htaccess:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.css|\.js)$
RewriteRule ^(.*)  index.php

Я пытался включить Опции +Ссылки на следующие ссылки, но это было бесполезно.

Все работает локально. Есть какие-нибудь указания на то, что я могу делать неправильно?

Author: Stephen Ostermiller, 2012-01-21

3 answers

Измените свой код следующим образом:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
 1
Author: anubhava, 2012-01-21 13:22:15

Вам также необходимо исключить перенаправляемую цель:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.css|\.js)$
RewriteCond $1 !=index.php
RewriteRule ^(.*)  index.php
 0
Author: Gumbo, 2012-01-21 13:25:26

Попробуйте выполнить следующие действия, чтобы предотвратить внутренние перенаправления

RewriteEngine On
#removed %{DOCUMENT_ROOT} as it is unnecessary
RewriteCond %{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.css|\.js)$ [NC]
#Prevent internal redirects
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(.*)  index.php [L]
 0
Author: , 2012-01-21 14:19:29