Схема перезаписи URL-адресов правил IIS для ссылок тегов привязки - PullRequest
0 голосов
/ 20 марта 2020

Я пытался найти некоторую дополнительную информацию о том, как можно выполнить перезапись URL-адреса, когда ожидаемый результат - удалить / заменить части URL-адреса.

Например, я хочу убедиться, что все Значение href моего тега привязки будет изменено.

<a class="button" href="https://www.oldgoogle.com" target="_blank">
<a class="button" href="https://www.oldgoogle.com/links" target="_blank">
<a class="button" href="https://www.oldgoogle.com/links/category?dosearch=true" target="_blank">
<a class="button" href="https://oldgoogle.com/nowww" target="_blank">

Таким образом, значение href будет выглядеть следующим образом:

<a class="button" href="https://newgoogle.com" target="_blank">
<a class="button" href="https://newoogle.com/links" target="_blank">
<a class="button" href="https://newgoogle.com/links/category?dosearch=true" target="_blank">
<a class="button" href="https://newgoogle.com/nowww" target="_blank">

Обратите внимание, что я практически удаляю www*1010* из URL, а также заменив oldgoogle на newgoogle .

Это то, что я пробовал до сих пор:

<rewrite>
  <outboundRules>
    <remove name="Strip WWW from Anchor Tags" />
    <rule name="Strip WWW from Anchor Tags" preCondition="IsHTML">
      <match filterByTags="A" pattern="^http(s)://www.oldgoogle.com/(.*)" />
      <conditions />
      <action type="Rewrite" value="https://newgoogle.com/{R:1}" />
    </rule>
  </outboundRules>
</rewrite>

Оцените любую информацию Вы можете поделиться, чтобы решить эту проблему.

PS Мы не можем изменять ссылки, исходящие из источника, поскольку все они завалены сетью внешних текстовых файлов, таблиц базы данных и других источников, а некоторые жестко закодированные правила пишут ссылки как есть. Таким образом, единственный вариант, который у меня есть на столе, - переписать ссылки, сгенерированные и выданные приложением.

1 Ответ

1 голос
/ 23 марта 2020

Вы можете попробовать использовать приведенное ниже правило:

<outboundRules>
              <rule name="rule1" preCondition="ResponseIsHtml1" stopProcessing="true">
                <match filterByTags="A" pattern="http(s)://(www.)?oldgoogle.com(.*)" />
                <action type="Rewrite" value="https://newgoogle.com{R:3}" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>

enter image description here

enter image description here

...