0

我在创建使用 IIS 中的重写映射的重写规则时遇到了问题。目标是重写请求,比如/Japan/test.htmlor/Chile/test.htmljp/en/simple-testand cl/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. 我想使用重写地图,因为会有更多的语言。

4

1 回答 1

0

经过几个小时的测试,我终于能够解决我的问题。以下是上述条件下的方式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参数中,您将看到特定的反向引用内容。

于 2018-05-24T21:28:38.307 回答