2012-05-16 15 views
10

Utilizo IIS 7.5 y reescritura de URL.IIS 7.5 Reescritura de URL: vuelva a escribir una carpeta desde una URL

que tienen un sitio web con jerarquía de archivos de esta manera:

webroot 
webroot/LegacySite 

tanto Webroot y el legado se separan App-carpetas en IIS.


I necesidad de reescribir las URL de mi manera:

a mi Web.Conf presente en la carpeta web raíz, en el momento no funciona correctamente, ¿podría indicarme 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> 

Respuesta

16

El 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 dejar caer el condicional para comprobar 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 Es probable que sólo necesita:

<rule name="MyRole" stopProcessing="true"> 
    <match url="LegacySite/(.*)" /> 
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" /> 
</rule> 

He añadido appendQueryString="true" a pasar cualquier parámetro (opcional) de cadena de consulta a la URL reescrito.

+0

Gracias Marco por su respuesta – GibboK

Cuestiones relacionadas