【发布时间】:2010-09-18 18:11:26
【问题描述】:
当一个 RewriteRule 被 MOD_Rewrite 执行时,是否会为新生成的请求再次执行所有 MOD_Rewrite 规则?具体在下面的例子中,这会不会导致循环?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
【问题讨论】:
标签: iis mod-rewrite isapi-rewrite
当一个 RewriteRule 被 MOD_Rewrite 执行时,是否会为新生成的请求再次执行所有 MOD_Rewrite 规则?具体在下面的例子中,这会不会导致循环?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
【问题讨论】:
标签: iis mod-rewrite isapi-rewrite
在您的情况下,它无论如何都不会循环。您打开了“L”开关,将特定规则固定为最后一个。
此外,您必须使用“N”或“NS”开关显式地强制下一次迭代,否则它只会在您的规则文件中移动并在最后一个匹配的规则处停止。来自文档:
N(下一次迭代)
强制重写引擎修改 规则的目标和重启规则 从头开始检查(所有 修改被保存)。数量 重新启动受值限制 在重复限制中指定 指示。如果超过这个数字 N 标志将被简单地忽略。
NS(同一规则的下一次迭代)
像 N 标志一样工作,但会重新启动 来自同一规则的规则处理 (即强制重复规则 应用)。最大数量 单个规则迭代由 重复限制指令。但是一些 一条规则重复不算数 对于全球重复次数(即 重复次数限制 由 N 标志引起的迭代是 与重复次数无关 NS引起的)。
【讨论】: