2011-11-22 7 views
7

Es una idea remota, pero espero encontrar una solución simple para un bizarro error que solo se manifiesta cuando la cadena de consulta es omitida/inferida por la aplicación.mod_rewrite solo en GET

Antes de profundizar en mil líneas de javascript de terceros, me gustaría averiguar si puedo aplicar la cadena de consulta automáticamente usando mod_rewrite.

RewriteRule ^index\.php$ index.php?module=Home&action=index 

Ahora, esto funcionaría bien, excepto en ocasiones se publicarán todos los datos, así que necesito un RewriteCond por lo que la regla sólo se disparará en GET solicitudes, y no POST solicitudes.

¿Esto es posible?

Respuesta

10

Añadir esta condición ...

RewriteCond %{REQUEST_METHOD} !POST 

... para no coincidir con POST solicitudes.

+0

Sabía que tenía que ser algo así. Busqué entre los documentos y subí con las manos vacías. Aprecio la ayuda! –

3

De the docs:

  • Servidor: Variables: Estas son las variables de la forma en que %{ NAME_OF_VARIABLE }NAME_OF_VARIABLE puede ser una cadena tomada de la siguiente lista:

    ...

conexión & solicitud:
...
REQUEST_METHOD

Así que, sí. Use RewriteCond con esa variable de servidor.

+0

¡Muchas gracias! –

+1

+1 porque la única razón por la que sabía la respuesta es porque me lo dijiste una vez :) – alex

9

Recomendaría ser explícito y solo activar RewriteRule cuando el método de solicitud es GET, en lugar de cuando no está ENVIADO ya que hay muchos otros métodos. Entonces su condición de reescritura podría verse así:

RewriteCond %{REQUEST_METHOD} =GET 

RewriteRule ^index\.php$ index.php?module=Home&action=index