2010-09-02 18 views
14

Estoy creando algo de almacenamiento en caché en uno de mis sitios, y no puedo encontrar si hay una manera de agregar una condición con mod_rewrite para aplicar solo si la cadena de consulta en una solicitud esta vacio.Reescribir para una cadena de consulta vacía

Por ejemplo, me gustaría saber si puedo tener una solicitud sin cadena de consulta como

http://www.example.com/ 

carga de la página en

http://www.example.com/index.home.html 

embargo, cualquier solicitud con una cadena de consulta, como

http://www.example.com/?id=32 

para cargar normalmente y no verse afectado por la reescritura.

¿Qué me estoy perdiendo?

Respuesta

32

Me di cuenta. Esto parece hacer el truco muy bien:

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^/$ /index.home.html 

Por supuesto, si hay una manera mejor, me encantaría escucharlo.

+0

¡gracias increíbles! realmente me ayudó a solucionar un problema de producción. – URB

3

Sé que esto queridos bastante viejo, pero mejor alternativa es:

RewriteCond %{QUERY_STRING} -n 
RewriteRule ^/$ /index.home.html 
+1

¿Por qué es mejor? –

0

a contrastar cadena de consulta vacía, utilizamos ^$ en nuestro modelo de Estado. La siguiente regla redirige /file.html a /file2.html pero no consigue redireccionar /file.html?querystring debido a la condición.

RewriteEngine on 

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^/?file.html$ /file2.html? [L,R] 

Un signo de interrogación vacía al final de la regla es importante, ya que descarta la vieja cadena de consulta de lo contrario la URL redirigida se verá como /file2.html?querystring.

Cuestiones relacionadas