重写规则案例"Internal server error"(错误.log内部)



我已经将旧的eZ-Publish网站升级到最新的PHP5兼容4.6版本(以前在PHP4上)。该站点在我的本地Web服务器上运行,但是当我尝试将其升级到服务器时,它失败了,并在Apache的错误中显示以下消息.log:

[Mon Apr 16 14:33:22 2012] [error] [client 46.249.225.2] Request exceeded the limit of 20 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

我已将其缩小到重写规则中的一个问题,这很奇怪,因为我使用与其他 4.6 安装相同的重写规则。以下是 Apache 主机文件中的重写规则:

RewriteEngine On
Rewriterule ^/var/storage/.* - [L]
Rewriterule ^/var/[^/]+/storage/.* - [L]
#RewriteRule ^/var/cache/texttoimage/.* - [L]
#RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
RewriteRule ^/var/([^/]+/)?cache/(texttoimage|public)/.* - [L]
Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
Rewriterule ^/share/icons/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?|lib|flash)/.* - [L]
Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
RewriteRule ^/favicon.ico - [L]
RewriteRule ^/robots.txt - [L]
RewriteRule ^/extension/sjsd/(FCKeditor|fcksjsd)/.* - [L]
RewriteRule ^/var/([^/]+/)?cache/public/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/calendar/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/calendar/ipopeng.htm - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/fckskins/.* - [L]
# Uncomment the following lines when using popup style debug.
# RewriteRule ^/var/cache/debug.html.* - [L]
# RewriteRule ^/var/[^/]+/cache/debug.html.* - [L]
RewriteRule .* /index.php

有人发现任何问题吗?

假设您的 .htaccess 文件位于根目录中,您的最后一个规则会创建一个内部重定向,该重定向以 /index.php 作为需要重写的 URL 重新启动重写过程。最后一条规则重写/index.php/index.php,循环继续。尝试在 .htaccess 文件中.*规则之前添加此行:

RewriteRule ^/index.php$ - [L]

最新更新