我有这个改写:
RewriteRule ^authenticate /id/authenticate.php [NS,QSA]
我收到此错误:
[星期六7月23日05:12:37 2011] [错误] [客户62.178.15.161]请求 由于可能,超过了10个内部重定向的限制 配置错误。使用'LimitInternalRecursion'来增加 必要时限制。使用'LogLevel debug'来获得回溯。,referer: https://2x.to/id/authenticate
我认为NS标志应该可以防止这种情况发生。
它是否因某些原因无法正常工作,我没有正确应用它还是误解了它的目的?
是否有另一种方法可以在不重命名文件的情况下使这个重写“工作”?
编辑:
我将RewriteRule改编为:
RewriteRule ^authenticate$ /id/authenticate.php [QSA]
效果很好。但是我仍然对NS无法工作的原因感兴趣。
答案 0 :(得分:2)
你可能想要[L]
,而不是[NS]
- [NS]
专门用于在某些异常情况下抑制重写,其中Apache会向自己发出“内部”请求,比如处理服务器端包括。
您可能还需要使规则更具体 - 根据此规则的位置,^authenticate
可能与/id/authenticate.php
匹配。如果是这种情况,您需要添加一个先前的规则,“删除”该文件的异常,如下所示:
RewriteRule ^/id/authenticate\.php$ - [L]