2011-05-13 9 views
13

En el módulo de reescritura de URL de IIS7, ¿puedo especificar en una regla de redireccionamiento que no se aplique a las solicitudes de publicación de HTTP? Estoy usando las plantillas proporcionadas por Microsoft para minúsculas de todas las URL y para agregar una barra al final. Sin embargo, tengo una solicitud de publicación de AJAX que no cumple con esta especificación pero se rompen y se reescriben como 301. No me preocupan las solicitudes POST para SEO, por lo que preferiría que solo pudiera especificar en la regla ignorarlo. A continuación son mis reglas:En el módulo de reescritura de URL de IIS7, ¿puedo especificar en una regla de redireccionamiento que no se aplique a las solicitudes de publicación de HTTP?

  <rule name="AddTrailingSlashRule" stopProcessing="true"> 
       <match url="(.*[^/])$" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
       </conditions> 
       <action type="Redirect" url="{R:1}/" /> 
      </rule> 
      <rule name="LowerCaseRule" stopProcessing="true"> 
       <match url="[A-Z]" ignoreCase="false" /> 
       <action type="Redirect" url="{ToLower:{URL}}" /> 
      </rule> 

Respuesta

23

Usted tiene acceso a la de la variable {REQUEST_METHOD} en las condiciones.

<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" /> 
+3

Solo lo encontré tropezando en el sistema de reglas de IIS. La ventana "Agregar condición" ofrece una experiencia intellisense en el campo de entrada cuando escribe el primer '{'. – patridge

+2

Gracias por esta respuesta. Fue una gran ayuda para mí, aunque descubrí que necesita especificar negate = "true" en esta condición para que la regla de reescritura se aplique a cosas que no son REQUEST_METHOD = POST. – JamieGaines

+0

¡Gran captura, @thinkzig! Definitivamente tengo ese 'negate' en el lugar donde estoy usando esto; Debo haberlo perdido en la confusión para SO. He corregido la respuesta ahora. – patridge

Cuestiones relacionadas