当MOD_Rewrite执行RewriteRule时,是否会为新生成的请求再次执行所有MOD_Rewrite规则?特别是在下面的例子中,这会导致循环吗?
RewriteCond Host: (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
答案 0 :(得分:3)
在你的情况下,它无论如何都不会循环。你打开了“L”开关,将特定规则固定为最后一个。
此外,您必须使用“N”或“NS”开关显式强制执行下一次迭代,否则它将仅移动您的规则文件并停止使用匹配的最后一个规则。来自文档:
N(下一次迭代)
强制重写引擎进行修改 规则的目标和重启规则 从头开始检查(全部 保存修改)。数量 重新启动受到值的限制 在RepeatLimit中指定 指示。如果超过此数量 N标志将被忽略。
NS(同一规则的下一次迭代)
像N标志一样工作,但重新启动 规则从同一规则处理 (即强制重复该规则 应用)。最大数量a 单一规则迭代由。给出 RepeatLimit指令。但是一些 重复的单一规则不计算在内 对于全球重复次数(即 重复限制一些 由N flag引起的迭代是 独立于许多重复 由NS)引起。