Leobreda.Net

HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL

TAG cloud

.net     ajax     api     arquivo     array     asp     asp.net     banco de dados     bing     bloqueio     boas práticas     bug     c sharp     c#     c#     chart     classe     collate     collation     complemento     complementos     componente     conexão sql     connection string     css     cursor location     desativar programas     dom     erro cs0246     explorer     ferramenta de busca     firefox     ftp     função     global.asa     global.asax     google     gráfico     helicon     hospedagem ruim     hostphd     http 301     imagem     include     indexação     inicialização     insert     internet lenta     legendas     limit

Pesquisa por: helicon

Criando urls amigáveis

seo, helicon, rewriterule, url amigável, url rewrite

26 de julho de 2009     12:58544 visitas

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

2010 - Leonardo Breda