iis-7 - reescritura - url amigables iis
Reescritura de URL de IIS 7.5: reescribe una carpeta desde una URL (1)
Uso IIS 7.5 y URL Rewrite.
Tengo un sitio web con jerarquía de archivos de esta manera:
webroot
webroot/LegacySite
tanto webroot como legacy son carpetas de aplicaciones separadas en IIS.
Necesito reescribir mis URL así que:
- Si la solicitud es http://mysite.co/LegacySite/page.aspx, la URL se reescribirá en http://mysite.co/page.aspx
Debajo de mi Web.Conf
presente en la carpeta webroot, por el momento no funciona correctamente, ¿podría indicarme qué es lo que me falta?
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="MyRole" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite.com" />
<add input="{PATH_INFO}" pattern="^/LegacySite/" negate="true" />
</conditions>
<action type="Rewrite" url="/LegacySite/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Lo siguiente debería funcionar:
<rule name="MyRole" stopProcessing="true">
<match url="LegacySite/(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^mysite.com$" />
</conditions>
<action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>
Es posible que desee descartar el condicional para verificar el nombre de host. ¿Es eso realmente importante? ¿Tiene algún otro nombre de dominio vinculado a ese sitio web para el que no desea que se produzca la redirección? Parece innecesario Probablemente solo necesites:
<rule name="MyRole" stopProcessing="true">
<match url="LegacySite/(.*)" />
<action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>
He agregado appendQueryString="true"
para pasar cualquier parámetro de cadena de consulta (opcional) a la URL reescrita.