Caractere $ para finalizar os padrões de redirecionamento com .htaccess
Continuando com os comentários e conselhos do
manual de .htaccess, há que comentar o uso do caractere $ nos padrões, para especificar o final de uma URL.
Para explicá-lo melhor vamos ver um exemplo.
Vejamos esta regra de .htaccess
RewriteRule ^artigos/(.+)\.html codigo/mostra_artigo_htaccess.php?id=$1
Esta regra diz que todas as URL como estas:
www.dominio.com/artigos/x.html
www.dominio.com/artigos/yyy.html
Serão processadas com o arquivo:
www.dominio.com/codigo/mostra_artigo_htaccess.php?id=x
www.dominio.com/codigo/mostra_artigo_htaccess.php?id=y
Porém, a coisa é que este padrão de htaccess também casa com outras url como estas:
www.dominio.com/artigos/x.htmlkk
www.dominio.com/artigos/x.html-oquefor
Isto é porque o padrão coincide, porque corresponde com a regra. Ou seja, a regra diz que começa a URL de depois do domínio por "artigos/" + qualquer conjunto de caracteres + ".html".
Teríamos que especificar de alguma forma que a URL deve terminar em ".html" e nada mais e para isso podemos utilizar "$" ao final da regra.
Agora esta outra regra .htaccess mais completa
RewriteRule ^artigos/(.+)\.html$ codigo/mostra_artigo_htaccess.php?id=$1
Neste caso indicamos com o "$" depois de \.html que a URL deve finalizar aí.
Algo como isto sim que concordaria a regra htaccess:
www.dominio.com/artigos/algo.html
Porém, isto não se processaria pelo .htaccess, porque não acaba em .html:
www.dominio.com/artigos/algo.htmlkk