Comunidad de diseño web y desarrollo en internet online

MOD_REWRITE .htaccess solo ejecuta la primera instruccion

Citar            
MensajeEscrito el 14 Ene 2009 04:42 pm
Hola a todos.
Tengo un problema con mi .htacces usando mod_rewrite.
El caso es que solo ejecuta la primera de las instrucciones que este en el archivo e ignora las demas.

Código :

RewriteEngine On

RewriteRule ^(.*)\.html$ index.php?conta=$1 [L]
RewriteRule ^(.*)\.html$ index.php?prod=$1 [L]
RewriteRule ^([^/]*)\.html$ /index.php?emp=$1 [L]

En este caso solo me ejecuta la de contacto, pero si cambio el orden de las instrucciones ejecuta la que este primero.
No se a que puede ser debido y como se podria solucionar. Muchas gracias!

Por bysv

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Ene 2009 07:33 pm
Lamento informarte que eso no es un error, sino que es el comportamiento definido del archivo htaccess. La dirección del sitio se va comparando una a una con cada una de las rewrite rules, y cuando encuentra una coincidencia, realiza la reescritura de la url, es por eso que las reglas más específicas se escriben arriba de las más generales.

Te recomiendo que agregues algún elemento de diferenciación entre las tres url, porque si miras las reglas te darás cuenta de que las tres son iguales. Si no lo has hecho aún te recomiendo que investigues acerca de expresiones regulares para poder crear reglas más específicas.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 15 Ene 2009 01:06 am
Muchas gracias por tu respuesta Odin.
La verdad es que no sabia si estaba haciendo algo mal.
Sí e leido sobre expresiones regulares pero no se como podria diferenciar estos elementos de manera que pueda escribir las tres expresiones o establecer una regla que abarque esta forma de estructura.
Necesito un poco de orientacion ahora al inicio.
Muchas gracias.

Por bysv

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Ene 2009 04:08 pm
Solo ejecuta una porque le dices explicitamente que ejecute una, y lo haces cuando colocas "[L]" que es un modificador que dice que será la ultima regla a ejecutar si coincide el patron. No obtstante, debes replantearte lo que deseas hacer porque como lo tiene, carece de todo sentido.


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 15 Ene 2009 04:52 pm
Gracias de nuevo por tu contestacion.

La cosa es que sin [L] tb hace solo la primera de ellas.

Lo que quiero conseguir es convertir la pagina de contacto que se localizaria por
"/index.php?conta=contacto" de forma que sea accesible por "/contacto html"

la pagina de productos y servicios
"/index.php?prod=productosyservicios" por "/productosyservicios.html"

y la de la empresa
"/index.php?emp=la_empresa" por "/la_empresa"

la forma de estructura de las tres es igual pero cada una responderia a una get diferente (conta, prod, emp.. y asi las que hubiera).
No se como podria diferenciarlas para que se me muestren como yo quiero. Soy consciente de que estoy un poco verde pero asi es como se aprende.

Muchas gracias

Por bysv

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 16 Ene 2009 04:28 pm
SEOlucionado! jeje
Muchas gracias por vuestras aportaciones.
Saludos a todos.

Por bysv

2 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.