2014-03-31 22 views
12

我在Windows Server 2008 R2 Enterprise上運行Apache 2.4(64位)和PHP 5.4.15,並且注意到Apache錯誤日誌中有以下錯誤:Apache 2.4 - 由於可能的配置錯誤,請求超過了10個內部重定向的限制

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重寫錯誤。

看這個帖子: Request exceeded the limit of 10 internal redirects due to probable configuration error.?

他們建議,以取代這樣的:有這一段代碼,斯科特楊禮貌

# 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 

任何人都可以提出什麼,我需要改變嗎?

回答

6

你進入循環最有可能是由於這些規則:

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

只是把它註釋掉,並在新的瀏覽器再試一次。

+1

謝謝,anubhava解決這一點。我會給出一個去,並儘快報告:) – iltdev

+0

我不害怕。它仍然記錄在日誌中的錯誤:( – iltdev

+1

註釋掉'RewriteRule ^(wp-(content | admin | includes)。*)$ 1 [L]'也是。 – anubhava

22

此問題可能是由於某些不存在的文件的請求引起的。例如,請求wp-content/uploads /中文件不存在的文件。

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

到:

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

根本的問題是,

如果這是您所看到的情況,你可以去爲.htaccess和改變這一行解決問題上面的規則觸發了前面一個斜槓重寫的完全相同的URL,並且因爲重寫了,新重寫的請求又通過規則返回,並觸發相同的規則。通過將該行的「$ 1」更改爲「 - 」,不會發生重寫,因此重寫過程不會從同一個URL重新開始。

有可能apache 2.2和2.4在處理這種只有差異是斜線的前景中存在差異,這就是爲什麼WordPress提供的默認規則無法完美工作的原因。

+0

謝謝賈斯汀。非常豐富。所以你認爲最好是保持重寫規則(而不是1美元)而不是評論它? – iltdev

0

通過添加以下

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