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

Я запускаю Apache 2.4 (64bit) и 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/ [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).*)  [L]
RewriteRule ^(.*.php)$  [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress

может ли кто-нибудь предложить, что мне нужно изменить?

3 ответов


вы получаете в цикл скорее всего из-за этих правил:

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

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


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

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

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

в:

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

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

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


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

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