重写规则超出内部重定向限制
Rewrite rule exceeding internal redirect limit
我的网站最多接受四个参数,因此我已将以下内容添加到我的 .htaccess。
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?atr=&dir=&query=&lookup= [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?atr=&dir=&query= [L]
RewriteRule ^([^/]*)/([^/]*)$ /index.php?atr=&dir= [L]
RewriteRule ^([^/]*)$ /index.php?atr= [L]
一切正常,直到我添加第五行以仅允许一个参数。在 index.php 的所有实例中出现此 returns 500 个错误,错误为:
Request exceeded the limit of 10 internal redirects
你的第 4 条规则是:
RewriteRule ^([^/]*)$ /index.php?atr= [L]
这也匹配 redirected/rewritten URL。所以,你会得到类似的东西:
http://host/index.php?atr=index.php%3Fatr=index.php%3Fatr=index.php%3Fatr=index.php%3Fatr=index.php
这是重定向循环。要解决这个问题,只需使用一个模式来否定匹配 index.php
本身。
RewriteRule ^((?!index\.php)[^/]*)$ /index.php?atr= [L]
我的网站最多接受四个参数,因此我已将以下内容添加到我的 .htaccess。
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /index.php?atr=&dir=&query=&lookup= [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /index.php?atr=&dir=&query= [L]
RewriteRule ^([^/]*)/([^/]*)$ /index.php?atr=&dir= [L]
RewriteRule ^([^/]*)$ /index.php?atr= [L]
一切正常,直到我添加第五行以仅允许一个参数。在 index.php 的所有实例中出现此 returns 500 个错误,错误为:
Request exceeded the limit of 10 internal redirects
你的第 4 条规则是:
RewriteRule ^([^/]*)$ /index.php?atr= [L]
这也匹配 redirected/rewritten URL。所以,你会得到类似的东西:
http://host/index.php?atr=index.php%3Fatr=index.php%3Fatr=index.php%3Fatr=index.php%3Fatr=index.php
这是重定向循环。要解决这个问题,只需使用一个模式来否定匹配 index.php
本身。
RewriteRule ^((?!index\.php)[^/]*)$ /index.php?atr= [L]