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>