我已经将旧的 eZ-Publish 站点升级到最新的 PHP5 兼容 4.6 版本(以前是 PHP4)。该站点在我的本地网络服务器上运行,但是当我尝试将其连接到服务器时,它失败并在 Apache 的 error.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]
关于apache - 重写规则案例 "Internal server error"(里面的 error.log),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186403/