Leobreda.net

Web, .Net,
SQL, Cloud...

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:

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:

 

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




Acessar todos os artigos »