MOD_Rewrite重写是否通过重写规则调用第二次运行?

时间:2008-10-23 10:21:23

标签: iis mod-rewrite isapi-rewrite

当MOD_Rewrite执行RewriteRule时,是否会为新生成的请求再次执行所有MOD_Rewrite规则?特别是在下面的例子中,这会导致循环吗?

RewriteCond Host:  (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]

1 个答案:

答案 0 :(得分:3)

在你的情况下,它无论如何都不会循环。你打开了“L”开关,将特定规则固定为最后一个。

此外,您必须使用“N”或“NS”开关显式强制执行下一次迭代,否则它将仅移动您的规则文件并停止使用匹配的最后一个规则。来自文档:

  

N(下一次迭代)

     

强制重写引擎进行修改   规则的目标和重启规则   从头开始检查(全部   保存修改)。数量   重新启动受到值的限制   在RepeatLimit中指定   指示。如果超过此数量   N标志将被忽略。

     

NS(同一规则的下一次迭代)

     

像N标志一样工作,但重新启动   规则从同一规则处理   (即强制重复该规则   应用)。最大数量a   单一规则迭代由。给出   RepeatLimit指令。但是一些   重复的单一规则不计算在内   对于全球重复次数(即   重复限制一些   由N flag引起的迭代是   独立于许多重复   由NS)引起。