2010-11-12 19 views
5

He seguido las instrucciones Learn IIS's webpage para agregar redireccionamientos estáticos con un mapa de reescritura para mi aplicación asp.net.ASP.NET/IIS7 Los mapas de reescritura de URL no funcionan

La siguiente es la configuración:

<rule name="Redirect rule1 for Information" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{Information:{REQUEST_URI}}" pattern="(.+)" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}" appendQueryString="true" /> 
</rule> 

Y

<rewriteMaps> 
    <rewriteMap name="Information"> 
     <add key="/Information/CorporateSales.aspx" 
      value="/KB/Information/CorporateSales" /> 
     <add key="/Information/ComputerRepair.aspx" 
      value="/KB/Information/ComputerRepair" /> 
    </rewriteMap> 
</rewriteMaps> 

Esto fue incluso creado originalmente por el asistente en el gestor de IIS para el uso de mapas de reescritura.

Así que la idea es que /Information/CorporateSales.aspx ->/KB/Information/CorporateSales con un redireccionamiento 301 (MOVIDO A PERMANENTEMENTE).

Sin embargo, acabo de recibir la página aspx original (que vamos a eliminar más adelante) cargando. Incluso he borrado el archivo en caso de que estuviera por defecto a un recurso existente, y con eso obtengo un simple 404 sin la redirección.

¿Alguien tiene una idea?

quiero aclarar algo:

módulo de reescritura trabaja, que está instalado y en funcionamiento. Mis reglas de expresiones regulares estándar funcionan muy bien. Pero mi reescribe el mapa no.

Respuesta

-2

¿Ha restablecido el grupo de aplicaciones y el sitio iis?

En algunos casos, puede tardar hasta 72 horas (iirc) en propagarse en todo el mundo.

+0

Esta es una máquina de desarrollo local, y he reiniciado no solo el grupo de aplicaciones, sino también todas las iis. – Aren

0

¿Tiene reescritura de Url instalada como parte de IIS7/7.5? Esto no está instalado por defecto. Además, asegúrese de que su grupo de aplicaciones esté configurado en modo pipline integrado, no clásico.

Editar

De esta:

http://learn.iis.net/page.aspx/469/using-rewrite-maps-in-url-rewrite-module/

Este único que veo que se está haciendo es añadir el atributo 'stopProcessing'. ¿Has intentado eliminar eso?

+0

Está instalado e integrado – Aren

2

Estaba teniendo un problema similar y encontré esta pregunta. Me tomó un poco de tiempo, pero pude descubrir cuál era el problema.

Mi rewriteMap contenía las URL "/Default2.aspx" y "/Dashboard.aspx".

Cuando iba a Default2.aspx, obtenía un 404 en lugar de ser redirigido a Dashboard.aspx como se esperaba.

El problema que encontré fue que en mi máquina, la aplicación se estaba ejecutando en un subdirectorio. Las rutas RewriteMap solo funcionarían si utilicé la ruta completa (incluida la carpeta de la aplicación), por ejemplo, "/TestSite/Default2.aspx".

Así que podría haber agregado entradas duplicadas en mi rewriteMap para tener en cuenta los directorios de las aplicaciones en las máquinas de desarrollo, pero eso parecía desordenado. Miré las otras reglas de reescritura en la aplicación que no tenían este problema y noté que estaban usando la variable {REQUEST_FILENAME}, en lugar de {REQUEST_URI}. Así que cambié la regla para usar {REQUEST_FILENAME} y eliminé la primera barra de las urls en mi rewriteMap.

0

Anteriormente tuve el mismo problema que usted describió.

Podría actualizar el código de

<match url="(.*)" /> 

y os esperamos en cuenta,

<add input="{Information:{REQUEST_URI}}" pattern="(.+)" /> 

esta condición capturará URL completa excepto el dominio. ejemplo en esta URL: www.example.com/Information/CorporateSales.aspx se comprobará condición de coincidencia de Information/CorporateSales.aspx en RewriteMap

y seguro que no será partido con esta url

www.example.com/old/Information/CorporateSales.aspx

5

Este artículo http://www.iis.net/learn/extensions/url-rewrite-module/using-rewrite-maps-in-url-rewrite-module y código de abajo trabajó para yo.

<rewrite> 
    <rules> 
     <rule name="Redirect rule1 for RedirectURLs"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{RedirectURLs:{REQUEST_URI}}" pattern="(.+)" /> 
      </conditions> 
      <action type="Redirect" url="{C:1}" appendQueryString="false" /> 
     </rule> 
    </rules> 
    <rewriteMaps> 
     <rewriteMap name="RedirectURLs"> 
      <add key="/privacy.php" value="/privacy" /> 
     </rewriteMap> 
    </rewriteMaps> 
</rewrite> 
Cuestiones relacionadas