Carácter $ para finalizar los patrones de redirección con .htaccess

  • Por
Utilizando en .htaccess el símbolo $ al final de un patrón indicamos que la URL debe acabar en ese punto.
Siguiendo con los comentarios y consejos del manual de .htaccess, hay que comentar el uso del carácter $ en los patrones, para especificar el final de una URL.

Para explicarlo mejor vamos a ver un ejemplo.

Veamos esta regla de .htaccess

RewriteRule ^articulos/(.+)\.html codigo/muestra_articulo_htaccess.php?id=$1

Esta regla dice que todas las URL como estas:

www.dominio.com/articulos/x.html
www.dominio.com/articulos/yyy.html

Serán procesadas con el archivo:

www.dominio.com/codigo/muestra_articulo_htaccess.php?id=x
www.dominio.com/codigo/muestra_articulo_htaccess.php?id=y

Pero el tema es que este patrón de htaccess también casa con otras url como estas:

www.dominio.com/articulos/x.htmlkk
www.dominio.com/articulos/x.html-loquesea

Esto es porque el patrón coincide, porque corresponde con la regla. Es decir la regla dice que empieza la URL de después del dominio por "articulos/" + cualquier conjunto de caracteres + ".html".

Tendríamos que especificar de alguna forma que la URL debe terminar en ".html" y nada más y para eso podemos utilizar "$" al final de la regla.

Ahora esta otra regla .htaccess más completa

RewriteRule ^articulos/(.+)\.html$ codigo/muestra_articulo_htaccess.php?id=$1

En este caso hemos indicado con el "$" después de \.html que la URL debe finalizar ahí.

Algo como esto sí que concordaría la regla htaccess:

www.dominio.com/articulos/algo.html

Pero esto no se procesaría por el .htaccess, porque no acaba en .html:
www.dominio.com/articulos/algo.htmlkk

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Yobani

25/9/2008
Estimados Amigo Gracias de ante manos

He estado probando el siguiente framento de codigo en mi web y no me funciona correctamente

RewriteRule ^x(.+).html$ productos/index.php?nombre=$1
redirect 301 /archivos.html http://www.codetel.net.do/

lo q me extraña es q el redirect si me esta funcionado pero lo del RewriteRule no me funciona

Gracias amigos.

Gerardo

28/10/2015
Gracias
Muchas gracias este tutorial me sirvio para terminar una redireccion que me tenia loco. Son lso mejores :)

Roberto

14/10/2016
Redireccionar varias páginas similares hacia una sola
Hola, en la herramienta de webmasters tengo varios errores 404. Quiero redireccionar estas páginas:
/pagina-buena/?p=102
/pagina-buena/?p=103
/pagina-buena/?p=104
...
/pagina-buena/?p=xxx

Hacia esta página: /pagina-buena/

Hay alguna forma de hacerlo de una sola vez, sin tener que hacerlo una por una.

Gracias.