Criando urls amigáveis
Aumente as visitas de seu site renomeando as URLs
Um site sem conteúdo dinâmico ficou na idade da pedra. Porém isso se tornou um problema: a URL da página, muitas vezes, não possui um nome agradável.
Imagina-se um site de notícias da seguinte forma:
- www.seusite.com.br/noticias.asp?ID=3534
- www.seusite.com.br/noticia_view.asp?NOTICIA=1283&MENU=1&ORIGEM=1
Observando logo de vista, o endereço final é longo, não condiz com o que irá mostrar, e o usuário não sabe sobre o que é a notícia.
Seria melhor assim:
- www.seusite.com.br/noticias/brasil-e-o-pais-com-mais-praias-bonitas-3534.html
- www.seusite.com.br/noticias/internet-esta-cada-vez-pior-1283-1-1.html
De fato, a URL está mais agradável, e o site poderá ter um destaque melhor nos motores de busca (Google, Bing, Yahoo!, etc), além da quantidade de visitas aumentas (foi assim que aconteceu com meu site!). Outra coisa: os motores de busca não costumam indexar muitas páginas de seu site que contenham caracteres do tipo '?' e '&'.
Sendo assim, existe um componente ISAPI para hospedagens Windows (IIS), chamado ISAPI REWRITE; em hospedagens Linux, este algoritmo é nativo.
Passo a passo:
1. Efetue o download do programa ISAPI REWRITE v3.0 no site da Helicon - http://www.helicontech.com/
2. Instale o programa no mesmo diretório raís do IIS
3. Abra o arquivo httpd.conf e insira o seguinte código:
RewriteEngine on
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
# unsupported directive: [ISAPI_Rewrite]
# transforma a url /noticias.asp?id=1234 em /noticias/bla-bla-bla-1234.html
RewriteRule ^/noticias/([a-z,0-9,_-]+)-([0-9]+).html$ /noticias.asp?ID=$2
# transforma a url /noticias_view.asp?NOTICIA=1283&MENU=1&ORIGEM=1 em /noticias/bla-bla-bla-1283-1-1.html
RewriteRule ^/noticias/([a-z,0-9,_-]+)-([0-9]+).html$ /noticia_view.asp?NOTICIA=$2&MENU=$3&ORIGEM=$4
4. Crie um arquivo chamado noticia_view.asp com o seguinte código:
<%
for each item in request.querystring
response.write item & ": " & request.querystring(item) & "<br />"
next
response.end
%>
Agora, abra o browser e digite http://localhost/noticias/internet-esta-cada-vez-pior-1283-1-5.html e verá que o resultado final é este:
NOTICIA=2 'request.querystring("NOTICIA")=2
MENU=1 'request.querystring("MENU")=1
ORIGEM=5 'request.querystring("ORIGEM")=5
Pronto! Seu servidor local já está atendendo aos padrões de URLs amigáveis.
Mas e quanto a expressão internet-esta-cada-vez-pior ? Esta expressão é livre, ou seja, experimente digitar qualquer coisa e verá que a página é a mesma. Na realidade, a expressão foi ignorada no URL Rewrite pela seguinte lógica:
RewriteRule ^/noticias/([a-z,0-9,_-]+)-([0-9]+).html$ /noticia_view.asp?NOTICIA=$2&MENU=$3&ORIGEM=$4
Observe que o parâmetro NOTICIA, recebeu o valor $2, o que significa que o valor de notícia deverá ser chamado em segundo lugar, MENU deverá ser chamado em terceiro lugar ($3) e ORIGEM chamado em quarto lugar ($4). Como o primeiro lugar não foi chamado em ^/noticias/([a-z,0-9,_-]+)-([0-9]+).html$, a primeira regra irá considerar qualquer valor.
O servidor que está hospedado meu site possui tal recurso?
Geralmente sim, pois acaba sendo um recurso valioso na escolha de um servidor de páginas pago. Empresas como a Locaweb e Kinghost já hospedam sites em servidores Windows com tal recurso. A única diferença que o arquivo httpd.conf varia de nome, de servidor para servidor. São eles: .htaccess e httpd.ini.
Regras de uso - Expressões regulares
Estas são as principais expressões regulares que você irá utilizar:
([a-z]) Apenas um caractere é aceito
([a-z]+) Mais de um caractere é aceito
([0-9]) Apenas um número é aceito
([0-9]+) Mais de um número é aceito
([a-z,0-9]) Apenas um caractere OU número é aceito
([a-z,0-9]+) Mais de um caractere OU número é aceito
([a-z,0-9,_-]+) Aceitos caracteres alfanuméricos, e especiais como "_" e "-"
Dicas importantes
1. A utilização deste componente, simplesmente traduz o endereço digitado como uma String. Sendo assim, podem ocorrer erro ao acessar a url www.site.com.br/noticias e www.site.com.br/noticias/ (faltando o carectere "/" no final). Acrescente a regra seguinte para evitar este tipo de erro:
RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]
2. Servidores acabam deixando uma brecha para qualquer um efetuar o download de seu arquivo .htaccess, como se fosse um arquivo. Insira a seguinte regra para evitar este problema:
RewriteRule ^/.htaccess$ /
3. A utilização de endereços terminados em .html, utiliza o caractere especial ".", devendo inserir uma barra invertida "" antes da expressão "html":
RewriteRule ^/central-de-atendimento.html$ /central_atendimento.asp