重写条件。太多的内部重定向。限制内部递归。

RewritCond. Too many internal redirects. LimitInternalRecursion.

此代码的行为因条件的顺序而异:

此代码有效

RewriteCond %{HTTP_HOST} ^(www.)?mypage.com$ [NC]
RewriteCond %{REQUEST_URI} !test/[NC]
RewriteCond %{REQUEST_URI} !x/ [NC]
RewriteCond %{REQUEST_URI} !test2/ [NC]
RewriteRule ^(.*)$ /test2/ [L]

这个不起作用 - 内部服务器错误 550-

RewriteCond %{HTTP_HOST} ^(www.)?mypage.com$ [NC]
RewriteCond %{REQUEST_URI} !test2/[NC]
RewriteCond %{REQUEST_URI} !x/ [NC]
RewriteCond %{REQUEST_URI} !test/ [NC]
RewriteRule ^(.*)$ /test2/ [L]

服务器日志:

由于可能的配置错误,请求超过了 10 个内部重定向的限制。如有必要,使用 'LimitInternalRecursion' 增加限制。

那个循环是怎么来的?为什么只有其中一种情况?

只是很难注意到打字错误。其中一个 conds 中的最终参数之间没有 space。

这里更容易发现:

RewriteCond %{REQUEST_URI} !foo/[NC] <-失败
RewriteCond %{REQUEST_URI} !foo/ [NC] <-有效