Переписать правило с переписать карту - PullRequest
0 голосов
/ 22 мая 2018

У меня возникла проблема с созданием правила перезаписи, использующего карту перезаписи в IIS.Цель состоит в том, чтобы переписать запросы типа /Japan/test.html или /Chile/test.html в jp/en/simple-test и 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.Я хочу использовать карту перезаписи, так как будет больше языков.

1 Ответ

0 голосов
/ 25 мая 2018

После нескольких часов испытаний я наконец-то смог решить свою проблему.Вот как Rewrite Rule и Rewrite 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вы увидите задний ссылочный контент.

...