Использование URL Rewrite для изменения части URL

Использование URL Rewrite для изменения части URL

Я пытаюсь использовать URL rewrite на IIS 8.0, чтобы переписать существующие URL на машине разработчика. Причина этого в том, что я не хочу менять существующий (старый) код.

Я пытаюсь изменить следующий код в потоке ответа:

<a href="http://www.foo.com/path/page.asp?a=1">Foo Page</a>

в:

<a href="http://www.foo.localhost/path/page.asp?a=1">Foo Page</a>

Но когда я пытаюсь, у меня получается:

<a href="foo.localhost">Foo Page</a>

И как вы все знаете, это не очень удовлетворительный результат.

Итак, как мне правильно переписать текст, чтобы добиться того, чего я пытаюсь добиться?

Я знаю, что есть лучшие способы сделать это, используя переменные приложения и т. д., но это старое решение, и я не хочу слишком много возиться с самим приложением. Я хочу свести изменения к минимуму. По крайней мере, для начала.

Правила, которые я попробовал, выглядят так:

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="foo.com" enabled="true">
        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="foo.com" />
        <action type="Rewrite" value="foo.localhost" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

Будет ли регулярные выражения предпочтительным решением этой проблемы?

решение1

На этот вопрос мне ответили на другом форуме. Это краткое изложение того ответа, для протокола.

Правильный вариант выглядит так:

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="foo.com" enabled="true">
        <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)foo.com(.*)$" />
        <action type="Rewrite" value="{R:1}foo.localhost{R:2}" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

Связанный контент