> Manuales > Editar htaccess para crear direcciones URL amigables

Ejemplos de patrones de expresiones regulares utilizados comúnmente para redirecciones con htaccess.

Las expresiones regulares son, digamos, un hueso duro de roer. Utilizan un lenguaje complicado que a veces se hace difícil de entender o de especificar. Por ello, es habitual que el desarrollador tenga ciertos problemas a la hora de crear sus patrones de expresiones regulares para utilizar en el .htaccess. A mi mismo me resultaba muchas veces complicado escribir las reglas, hasta que entendí un poco el lenguaje de expresiones regulares y creé una serie de reglas de uso común, que luego suelo reutilizar en mis archivos .htaccess.

En este artículo pienso proporcionar una serie de ejemplos de reglas htaccess, o de patrones de expresiones regulares que podemos utilizar en nuestras páginas web. No obstante, cabe recordar para los lectores que tenemos diversos recursos interesantes para documentarse sobre estos asuntos en: Sin más, empecemos dando los distintos ejemplos:

Ejemplo 1 de expresión regular para htaccess

RewriteRule ^resultados/pagina_pg([0-9]+)\.php resultados/index.php?&_pagi_pg=$1

Esta regla puede servir bien para paginadores, porque crearmos URLs amigables que tienen el número de la página de resultados que se desea ver. Esta regla redirige todo lo que sea como:

www.midominio.com/resultados/pagina_pg5.php
www.midominio.com/resultados/pagina_pg23.php
www.midominio.com/resultados/pagina_pg19992.php
… y cualquier otra combinación de números, con tantos dígitos como sea necesario.

A direcciones como estas:

www.midominio.com/resultados/index.php?&_pagi_pg=5
www.midominio.com/resultados/index.php?&_pagi_pg=23
www.midominio.com/resultados/index.php?&_pagi_pg=19992

Ejemplo 2 de expresión regular para htaccess

RewriteRule ^platos/letra_([a-z])\.php$ codigo/platos_inicial.php?letra=$1

Esta regla htaccess es parecida a la anterior, sólo que en vez de números gestiona iniciales y además, como no tiene el signo "+", sólo acepta una letra.

Acepta URLs como estas:
www.midominio.com/platos/letra_a.php
www.midominio.com/platos/letra_x.php

Y redirige estas URLs a direcciones como estas:

www.midominio.com/codigo/platos_inicial.php?letra=a
www.midominio.com/codigo/platos_inicial.php?letra=x

Pero no acepta más de una letra en la inicial y sólo acepta minúsculas. Osea, estas direcciones no concordarían con el patrón de expresión regular:

www.midominio.com/platos/letra_xy.php
www.midominio.com/platos/letra_A.php

Ejemplo 3 de expresión regular para htaccess

RewriteRule ^platos/pais_([a-z_-]+)\.php$ codigo/platos_pais.php?nombre_pais=$1

Esta regla avanza un poco en la regla anterior, porque permite cualquier número de caracteres y además también acepta que se coloquen guiones bajos y medios.

Acepta URLs como estas:

www.midominio.com/platos/pais_a.php
www.midominio.com/platos/pais_abc.php
www.midominio.com/platos/pais_a-b_c.php

Estas direcciones las redireccionaría internamente a estas URL:

www.midominio.com/codigo/platos_pais.php?nombre_pais=a
www.midominio.com/codigo/platos_pais.php?nombre_pais=abc
www.midominio.com/codigo/platos_pais.php?nombre_pais=a-b_c

Esta regla no aceptaría nombres de países que tuvieran una mayúscula.

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual