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

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

解决方案

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

此外,您必须通过使用“N”来明确强制下一次迭代。或“NS”或“NS”。切换,或者只是在规则文件中移动并停止匹配的最后一个规则。来自文档:

  

N(下一次迭代)

     

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

     

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

     

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top