Exemplo mais complexo de RewriteRule
No anterior capítulo vimos como trasladar com RewriteRule parte de uma URL estática a uma URL com passo de parâmetros. Para isso definíamos no padrão um agrupamento com (+.) e logo a utilizávamos com $1 na URL redirecionada com passo de parâmetros. Ver o
anterior artigo para mais informação.
Em algumas ocasiões não basta com enviar um parâmetro para que a página receba todos os dados que necessita para mostrar os conteúdos específicos.
Se na expressão regular tivéssemos outros (+.) então na url_destino teríamos que utilizar $1 para o primeiro (+.) que houver na expressão regular e $2 para o segundo, $3 para o terceiro e assim sucessivamente.
Por exemplo, aqui podemos ver uma instrução RewriteRule que utiliza duas partes com (+.) para fazer o padrão.
RewriteRule ^agenda/(.+)/(.+)\.html codigo/hora.php?mes=$2&ano=$1
Esta expressão regular quer dizer: Qualquer URL que comece por "agenda/", seguida de qualquer coisa, logo uma barra e qualquer outra coisa, acabado em ".html" (observar a contrabarra antes de ".html" que é um caractere de escape para indicar que o "." de antes de "html" é um ponto, em lugar do código especial que costuma significar qualquer caractere. Ver o artigo anterior para mais explicações sobre as expressões regulares deste estilo.
Como se pode ver, os endereços estáticos amigáveis a buscadores não têm porquê finalizar em .php. Neste caso finaliza em .html, porém poderia acabar de qualquer outra forma, como .htm, .php3, .shtml ou em um diretório.
No caso do exemplo anterior, um endereço com esta forma:
www.dominio.com/agenda/2007/8
Fará corresponder com uma url_destino assim:
www.dominio.com/codigo/hora.php?mes=7&ano=2007
Embora também poderiam ter concordado outros modelos de endereços como:
www.dominio.com/agenda/05/01
www.dominio.com/agenda/2006/abril
Será nossa responsabilidade fazer o tratamento para que só as URL que queremos mostrem a página correta. Veremos no próximo capítulo como fazer este tratamento de possíveis erros e como resolver outros possíveis problemas do uso do htaccess.
Comentários do artigo