Foros del Web » Administración de Sistemas » Apache »

Ambiguedad .htaccess

Estas en el tema de Ambiguedad .htaccess en el foro de Apache en Foros del Web. Hola amigos, Estoy tratando de usar unas reglas del mod_rewrite, para hacer las urls amigables, mi código es el siguiente: Código: RewriteRule ^galerias/(.*).html([/]*)$ contenido.php?tipo=galeria&archivo=$1 RewriteRule ...
  #1 (permalink)  
Antiguo 28/01/2010, 12:20
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 19 años, 1 mes
Puntos: 1
Ambiguedad .htaccess

Hola amigos,

Estoy tratando de usar unas reglas del mod_rewrite, para hacer las urls amigables, mi código es el siguiente:

Código:
RewriteRule ^galerias/(.*).html([/]*)$ contenido.php?tipo=galeria&archivo=$1
RewriteRule ^articulos/(.*).html([/]*)$ contenido.php?tipo=articulo&archivo=$1
RewriteRule ^dbo/(.*).html([/]*)$ contenido.php?tipo=pagina&archivo=$1
RewriteRule ^(.*)/index.html([/]*)$ bloque.php?archivo=$1
RewriteRule ^(.*).html([/]*)$ $1.php
Me funciona correctamente visualmente, pero luego si pongo en el PHP:

Código PHP:
echo $_SERVER['PHP_SELF']; 
Me salen cosas raras:

Código:
/contenido.php/pagina-2.phpArray
Esto en el caso de la regla numero 3.

¿Es posible que haya ambiguedad en las reglas, o esté usando mal las expresiones regulares?

Un saludo!
  #2 (permalink)  
Antiguo 28/01/2010, 12:42
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Ambiguedad .htaccess

Lo de que sale la "Array" esa, es culpa de mi script:

Ahora queda asi:

Código:
/contenido.php/pagina-1.phptipo=pagina&archivo=pagina-1
Puedo entender que la ultima regla es muy genérica y está afectando a todas las demás no? La ultima regla es solo para que los archivos estáticos que quedan en plan, contacto.php (sin parametros), no muestren el PHP, puesto que me gusta ocultar la tecnología con la que trabajo.

Un saludo!
  #3 (permalink)  
Antiguo 28/01/2010, 12:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Ambiguedad .htaccess

Sí, la última regla es muy genérica. ¿Has probado con agregar el flag L (last rule) a todas las reglas?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 28/01/2010, 12:50
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Ambiguedad .htaccess

Busqué y encontre: "con [L] le decimos al mod_rewrite que esa es la última regla evitando así que las siguientes reglas puedan cambiar el resultado de la petición"

A pesar que le puse [L] a todas las reglas y ahora si me funciona, no entiendo el concepto, si es para indicar que es la última, no tendría que haber solo una [L]?

Un saludo!

Última edición por urameshix; 28/01/2010 a las 12:58
  #5 (permalink)  
Antiguo 28/01/2010, 13:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Ambiguedad .htaccess

Lo que el flag indica es que si se cumple la regla, el resto ya no será procesado. Si no se cumple, se procesará la siguiente, que puede o no tener el flag L y de acuerdo a eso el servidor procesará o no las demás reglas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 28/01/2010, 13:18
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: Ambiguedad .htaccess

Gracias David, así puedo poner reglas por orden de mas concretas a mas genéricas sin que se sobreescriban.

Eres un crack!

Saludos!

Etiquetas: htaccess
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:21.