使用重写映射重写规则

Rewrite Rule with Rewrite Map

我在使用 IIS 中的重写映射创建重写规则时遇到问题。目标是将 /Japan/test.html/Chile/test.html 之类的请求重写为 jp/en/simple-testcl/en/simple-test.

重写规则如下:

<rule name="Rewrite sites" enabled="true" stopProcessing="true">
  <match url="^/(.*)/test.html$" />
  <conditions>
    <add input="{Sites:{R:1}}" pattern="(.+)" />
  </conditions>
  <action type="Rewrite" url="{C:1}/en/simple-test" appendQueryString="false" />
</rule>

这是我重写的地图:

<rewriteMap name="Sites">
  <add key="chile" value="cl" />
  <add key="japan" value="jp" />
</rewriteMap>

所以再一次,我想把所有的语言动态翻译成语言代码,重写成language_code/en/simple-test。我想使用重写地图,因为会有更多的语言。

经过几个小时的测试,我终于能够解决我的问题。在上述条件下,Rewrite RuleRewrite Map 应该是这样的:

<rule name="Rewrite sites" enabled="true" stopProcessing="true">
  <match url="(.*)/test.html$" />
  <conditions>
    <add input="{Sites:{R:1}}" pattern="(.*)" />
  </conditions>
  <action type="Rewrite" url="{C:1}/en/simple-test" />
</rule>

<rewriteMap name="Sites">
  <add key="chile" value="/cl" />
  <add key="japan" value="/jp" />
</rewriteMap>

提示!如果您不知道 {R:0}、{R:1}、{C:0} 或 {C:1} 反向引用中的内容,请创建假重写操作,例如:<action type="Rewrite" url="www.test.com?a={C:1}" />a param 你会看到特定的反向引用内容。