Подтвердить что ты не робот

Apache 2.4 - Запрос превысил предел 10 внутренних переадресаций из-за вероятной ошибки конфигурации

Я запускаю Apache 2.4 (64 бит) и PHP 5.4.15 на Windows Server 2008 R2 Enterprise и заметил следующую ошибку в журнале ошибок Apache:

AH00124: 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.

У меня есть многоуровневая установка WordPress, и я думаю, что ошибка возникает из-за ошибки в htaccess переписывает.

Глядя на это сообщение: Запрос превысил предел 10 внутренних переадресаций из-за вероятной ошибки конфигурации.?

Они предлагают заменить это:

# BEGIN Wordpress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>
# END WordPress

с этим фрагментом кода, любезно предоставленный Скоттом Янгом:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.+)$ /index.php/$1 [L,QSA]
</IfModule>

Однако, мой WordPress htaccess выглядит немного по-другому, поэтому я просто не хочу заменять свой код на случай, если случайно поменю что-то, что мне нужно.

Вот мой htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymLinks -MultiViews
Header set Access-Control-Allow-Origin "*"
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress

Может кто подскажет, что мне нужно изменить?

4b9b3361

Ответ 1

Вы попадаете в цикл, скорее всего, из-за этих правил:

RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]

Просто прокомментируйте это и повторите попытку в новом браузере.

Ответ 2

Эта проблема может быть вызвана запросами определенных файлов, которые не существуют. Например, запросы на файлы в wp-content/uploads/, где файл не существует.

Если это ситуация, которую вы видите, вы можете решить проблему, перейдя в .htaccess и изменив эту строку:

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]

в

RewriteRule ^(wp-(content|admin|includes).*) - [L]

Основная проблема заключается в том, что вышеприведенное правило запускает переписывание на тот же самый URL-адрес с косой чертой спереди, и поскольку существует переписывание, вновь перезаписанный запрос снова возвращается к правилам и запускается одно и то же правило. Изменяя эту строку "$ 1" на "-", переписывание не происходит, поэтому процесс перезаписи не начинается снова с тем же URL-адресом.

Возможно, существует разница в том, как apache 2.2 и 2.4 обрабатывают эту ситуацию только-различие-это-косая черта во-первых и что правила по умолчанию, предоставляемые WordPress, не работают отлично.

Ответ 3

Решил это, добавив следующее

RewriteCond %{ENV:REDIRECT_STATUS} 200 [OR]
 RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILENAME} -d
 RewriteRule ^ - [L]