Usando URL Rewrite para alterar parte do URL

Usando URL Rewrite para alterar parte do URL

Estou tentando usar uma reescrita de URL em um IIS 8.0 para reescrever URLs existentes em uma máquina de desenvolvedor. A razão para isso é que não quero alterar o código existente (antigo).

O que estou tentando conseguir é alterar o seguinte código no fluxo de resposta:

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

em:

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

Mas quando estou tentando, acabo com:

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

E como todos sabem, este não é um resultado muito satisfatório.

Então - como faço para reescrever adequadamente para conseguir o que estou tentando fazer?

Eu sei que existem maneiras melhores de fazer isso, usando variáveis ​​de aplicação etc., mas é uma solução antiga e não quero mexer muito com a aplicação em si. Quero manter as alterações no mínimo. Pelo menos para começar.

As regras que tentei são assim:

<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>

A regex seria a solução preferível para este problema?

Responder1

Essa pergunta foi respondida em outro fórum. Esta é uma recapitulação dessa resposta, para registro.

A reescrita correta é assim:

<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>

informação relacionada