Uso de URL Rewrite para cambiar parte de la URL

Uso de URL Rewrite para cambiar parte de la URL

Estoy intentando utilizar una reescritura de URL en un IIS 8.0 para reescribir las URL existentes en una máquina de desarrollador. La razón de esto es que no quiero cambiar el código existente (antiguo).

Lo que intento lograr es cambiar el siguiente código en el flujo de respuesta:

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

en:

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

Pero cuando lo intento, termino con:

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

Y como todos sabéis, este no es un resultado muy satisfactorio.

Entonces, ¿cómo hago esta reescritura adecuada para lograr lo que estoy tratando de hacer?

Sé que hay mejores maneras de hacer esto, usando variables de aplicación, etc., pero es una solución antigua y no quiero complicarme demasiado con la aplicación en sí. Quiero mantener los cambios al mínimo. Al menos para empezar.

Las reglas que probé se ven así:

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

¿Las expresiones regulares serían la solución preferible a este problema?

Respuesta1

Esta pregunta me la respondieron en otro foro. Este es un resumen de esa respuesta, para que conste.

La reescritura correcta se ve así:

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

información relacionada