Vemos un segundo caso de redirección de URLs amigables a buscadores hacia URLs con paso de parámetros.
En el anterior capítulo vimos como trasladar con RewriteRule parte de una URL estática a una URL con paso de parámetros. Para ello definíamos en el patrón una agrupación con (+.) y luego la utilizábamos con $1 en la URL redirigida con paso de parámetros. Ver el anterior artículo para más información.
En algunas ocasiones no basta con enviar un parámetro para que la página reciba todos los datos que necesita para mostrar los contenidos específicos.
Si en la expresión regular tuviéramos otros (+.) entonces en la url_destino tendríamos que utilizar $1 para el primer (+.) que haya en la expresión regular y $2 para el segundo, $3 para el tercero y así sucesivamente.
Por ejemplo, aquí podemos ver una sentencia RewriteRule que utiliza dos partes con (+.) para hacer el patrón.
RewriteRule ^agenda/(.+)/(.+)\.html codigo/cita.php?mes=$2&anio=$1
Esta expresión regular quiere decir: Cualquier URL que comience por "agenda/", seguida de cualquier cosa, luego una barra y cualquier otra cosa, acabado en ".html" (fijarse la contrabarra antes de ".html" que es un carácter de escape para indicar que el "." de antes de "html" es un punto, en lugar del codigo especial que suele significar cualquier caracter. Ver el artículo anterior para más explicaciones sobre las expresiones regulares de este estilo.
Como se puede ver, las direcciones estáticas amigables a buscadores no tienen por que finalizar en .php. En este caso finaliza en .html, pero podría acabar de cualquier otra forma, como .htm, .php3, .shtml o en un directorio.
En el caso del ejemplo anterior, una dirección con esta forma:
www.dominio.com/agenda/2006/7
Se hará corresponder con una url_destino así:
www.dominio.com/codigo/cita.php?mes=7&anio=2006
Aunque también podrían haber concordado otros modelos de direcciones como:
www.dominio.com/agenda/05/01
www.dominio.com/agenda/2006/marzo
Será nuestra responsabilidad hacer el tratamiento para que sólo las URL que queremos muestren la página correcta. Veremos en el proximo capítulo cómo hacer este tratamiento de posibles errores y cómo resolver otros posibles problemas del uso del htaccess.
En algunas ocasiones no basta con enviar un parámetro para que la página reciba todos los datos que necesita para mostrar los contenidos específicos.
Si en la expresión regular tuviéramos otros (+.) entonces en la url_destino tendríamos que utilizar $1 para el primer (+.) que haya en la expresión regular y $2 para el segundo, $3 para el tercero y así sucesivamente.
Por ejemplo, aquí podemos ver una sentencia RewriteRule que utiliza dos partes con (+.) para hacer el patrón.
RewriteRule ^agenda/(.+)/(.+)\.html codigo/cita.php?mes=$2&anio=$1
Esta expresión regular quiere decir: Cualquier URL que comience por "agenda/", seguida de cualquier cosa, luego una barra y cualquier otra cosa, acabado en ".html" (fijarse la contrabarra antes de ".html" que es un carácter de escape para indicar que el "." de antes de "html" es un punto, en lugar del codigo especial que suele significar cualquier caracter. Ver el artículo anterior para más explicaciones sobre las expresiones regulares de este estilo.
Como se puede ver, las direcciones estáticas amigables a buscadores no tienen por que finalizar en .php. En este caso finaliza en .html, pero podría acabar de cualquier otra forma, como .htm, .php3, .shtml o en un directorio.
En el caso del ejemplo anterior, una dirección con esta forma:
www.dominio.com/agenda/2006/7
Se hará corresponder con una url_destino así:
www.dominio.com/codigo/cita.php?mes=7&anio=2006
Aunque también podrían haber concordado otros modelos de direcciones como:
www.dominio.com/agenda/05/01
www.dominio.com/agenda/2006/marzo
Será nuestra responsabilidad hacer el tratamiento para que sólo las URL que queremos muestren la página correcta. Veremos en el proximo capítulo cómo hacer este tratamiento de posibles errores y cómo resolver otros posibles problemas del uso del htaccess.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...