Padrões de expressões regulares para htaccess
As expressões regulares são, digamos um osso duro de roer. Utilizam uma linguagem complicada que às vezes se torna difícil de entender ou de especificar. Por isso, é habitual que o desenvolvedor tenha certos problemas na hora de criar seus padrões de expressões regulares para utilizar no .htaccess. A mim mesmo, muitas vezes era complicado escrever as regras, até que entendi um pouco a linguagem de expressões regulares e criei uma série de regras de uso comum, que logo costumo reutilizar em meus arquivos .htaccess.
Neste artigo proporciono uma série de exemplos de regras htaccess, ou de padrões de expressões regulares que podemos utilizar em nossas páginas web. Não obstante, cabe lembrar aos leitores que temos diversos recursos interessantes para se documentar sobre estes assuntos em:
Manual de htaccess
Sem mais, comecemos dando os distintos exemplos:
Exemplo 1 de expressão regular para htaccess
RewriteRule ^resultados/pagina_pg([0-9]+)\.php resultados/index.php?&_pagi_pg=$1
Esta regra pode servir bem para paginadores, porque cria URLs amigáveis que têm o número da página de resultados que se deseja ver. Esta regra redireciona tudo o que for como:
www.meudominio.com/resultados/pagina_pg5.php
www.meudominio.com/resultados/pagina_pg23.php
www.meudominio.com/resultados/pagina_pg19992.php
… e qualquer outra combinação de números, com tantos dígitos como quantos forem necessários.
Aos endereços como estes:
www.meudominio.com/resultados/index.php?&_pagi_pg=5
www.meudominio.com/resultados/index.php?&_pagi_pg=23
www.meudominio.com/resultados/index.php?&_pagi_pg=19992
Exemplo 2 de expressão regular para htaccess
RewriteRule ^pratos/letra_([a-z])\.php$ codigo/pratos_inicial.php?letra=$1
Esta regra htaccess é parecida à anterior, só que ao invés de números gerenciam iniciais e ademais, como não tem o signo "+", só aceita uma letra.
Aceita URLs como estas:
www.meudominio.com/pratos/letra_a.php
www.meudominio.com/pratos/letra_x.php
E redireciona estas URLs a endereços tal como estes:
www.meudominio.com/codigo/pratos_inicial.php?letra=a
www.meudominio.com/codigo/pratos_inicial.php?letra=x
Porém, não aceita mais de uma letra na inicial, e só aceitam minúsculas. Ou seja, estes endereços não concordariam com o padrão de expressão regular:
www.meudominio.com/pratos/letra_xy.php
www.meudominio.com/pratos/letra_A.php
Exemplo 3 de expressão regular para htaccess
RewriteRule ^pratos/pais_([a-z_-]+)\.php$ codigo/pratos_pais.php?nome_pais=$1
Esta regra avança um pouco na regra anterior, porque permite qualquer número de caracteres e ademais também aceita que se coloquem hífens baixos e médios.
Aceita URLs como estas:
www.meudominio.com/pratos/pais_a.php
www.meudominio.com/pratos/pais_abc.php
www.meudominio.com/pratos/pais_a-b_c.php
Estes endereços as redirecionaria internamente a estas URL:
www.meudominio.com/codigo/pratos_pais.php?nome_pais=a
www.meudominio.com/codigo/pratos_pais.php?nome_pais=abc
www.meudominio.com/codigo/pratos_pais.php?nome_pais=a-b_c
Esta regra não aceitaria nomes de países que tivessem uma maiúscula.