Este artigo tem como objetivo explicar como implementar URL’s amigáveis utilizando ISAPI REWRITE e ASP clássico 3.0.
Os principais motores de busca da atualidade estão dando muita importância a semântica da nomenclatura das paginas na internet. Podemos perceber que não vemos mais caracteres como id=234 ou cod=312&pag=1 em endereços de sites, que se transformaram em algo do tipo /noticia/123/o-homem-chega-a-lua. Falando resumidamente, podemos chamar esta prática de URL’s amigáveis. Aqui temos informações mais detalhadas.
Hoje já temos disponíveis na internet muito conteúdo sobre o assunto, em várias plataformas como PHP, .NET, JAVA mas muito pouco conteúdo que aborde o ASP clássico 3.0.
Meu objetivo é explicar em um processo completo como transformar seu site que utiliza URL’s convencionais em amigáveis.
O que é ISAPI REWRITE.
São extensões que são executadas em processos do servidor Web. São controladas por eventos do servidor não por requisições do cliente. Na prática, são regras que são executadas antes de um servidor web mostrar o conteúdo solicitado por um usuário.
Para que nossa tarefa seja cumprida com eficiência, não é necessário ter domínio sobre os filtros ISAPI REWRITE, porém é muito importante ter conhecimento sobre eles, para saber como, quando, e porque utilizar. Além disto se for necessário cumprir alguma tarefa mais complexa tais conhecimentos farão muita falta. Como este não é o assunto principal do artigo, deixo com os leitores ótimas referencias de estudo sobre o assunto, que podem ser encontradas em http://www.isapirewrite.com/, http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html, e http://en.wikipedia.org/wiki/Rewrite_engine.
Instalação do ISAPI REWRITE
A instalação depende muito do ambiente em que a solução será implementada. Se a instalação for em um servidor local ou próprio, onde temos controle total então podemos instalar seguindo estes passos. Se a instalação for em um servidor compartilhado, então tudo deve ser feito via painel de controle, geralmente por um botão de comando ativar/desativar, ou então por uma solicitação no helpdesk.
Testando o ISAPI REWRITE
O primeiro teste além de certificar o funcionamento do filtro ISAPI, também garante a segurança das regras desenvolvidas para o domínio.
Versão 2.0 Digite em seu navegador: HTTP://www.seudominio.com.br/httpd.ini
Versão 3.0 Digite em seu navegador: http://www.seudominio.com.br/.htaccess
Sucesso: Seu navegador retornou uma mensagem como “Ops! Este link parece estar corrompido” ou “Não é possível localizar a página da Web”.
Falha: Seu navegador exibiu o conteúdo do arquivo ou forneceu opção para download.
Agora vamos para o próximo teste. Para testar os filtros em funcionamento, podemos utilizar uma regra simples, de apenas uma linha. Deixe seu arquivo como abaixo:
[ISAPI_Rewrite] RewriteRule ^/default/?([a-zA-Z0-9_-]+)?(.html)?$ /default.asp [I,L]
Em seguida digite em seu navegador: HTTP://www.seudominio.com.br/default/
Sucesso: Seu navegador retornará a página default com todo seu conteúdo
Falha: Seu navegador retornará mensagens como “Não é possível localizar a página da Web”. Verifique a instalação do filtro em seu servidor.
Criando regras para as urls amigáveis.
Este artigo tem objetivo facultativo, e se você chegou até aqui, presumo que seja iniciante com a utilização de ISAPI_REWRITE. Por isto, vamos criar regras básicas, para facilitar o entendimento e absorção do material e neste caso, vamos criar uma regra para cada arquivo.
O site que vamos utilizar como exemplo para implementar as URL’s amigáveis tem a seguinte estrutura:
| noticias.asp | quemsomos.asp | servicos.asp | contato.asp |
A pagina de noticias é uma pagina dinâmica, que recebe até 3 parâmetros: id da categoria, id da noticia e numero da pagina (em caso de paginação). Ou seja, a pagina de noticias é acessada da seguinte maneira:
HTTP://www.seudominio.com.br/noticia.asp?idNoticia=15&idCategoria=23&Pagina=3
Logo, a regra deverá ser:
RewriteRule ^/noticia/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)-([0-9]+),([0-9]+),([0-9]+)/?(.html)?$ /noticia.asp?idNoticia=$3&idCategoria=$4&Pagina=$5 [I,L]
Esta é regra a conversão do link acima, que retornará o seguinte endereço:
http://www.seudominio.com.br/noticia/esportes/pele-e-o-rei-do-futebol-15,23,3.html
Para as demais paginas, que não recebem parâmetros as regras ficarão mais simples, veja:
RewriteRule ^/default/?([a-zA-Z0-9_-]+)?(.html)?$ /default.asp [I,L] RewriteRule ^/quemsomos/?([a-zA-Z0-9_-]+)?(.html)?$ /quemsomos.asp [I,L] RewriteRule ^/servicos/?([a-zA-Z0-9_-]+)?(.html)?$ /servicos.asp [I,L] RewriteRule ^/contato/?([a-zA-Z0-9_-]+)?(.html)?$ /contato.asp [I,L]
Modificando os links internos
Depois que as regras foram mapeadas e concluídas, e todas paginas já estão funcionando com a utilização do ISAPI REWRITE, chega a hora então e apontar os links internos do site para a novo formato do link.
Utilizando sua IDE de desenvolvimento será necessário efetuar uma busca em seu site por todas as ocorrências da tag “<a>…</a>”. Localize e abra todos os arquivos que contenha a sintax “<a href=”.
Com os links já localizados, faça a modificação do código tomado como exemplo. Troque:
<a href="noticia.asp?idNoticia=15&idCategoria=23&Pagina=3">Titulo Notícia</a>
Por:
<a href="<%=URLamigavel("noticia.asp?idNoticia=15&idCategoria=23&Pagina=3","nome da Categoria","Titulo Noticia")%>">Titulo Notícia</a>
Para que o site permaneça funcionando, basta criar uma função que retorne o mesmo valor. Assim também é possível manter o site funcionando caso ocorre algum problema com o servidor ou com a própria aplicação.
Function URLamigavel(param) URLamigavel = param End Function
Função para converter url amigável
Precisaremos então de uma função que converta os links atuais, para os novos formatos de links. Na sua biblioteca de funções cria as seguinte funções:
<pre>Function urlAmigavel(pag, ByVal cat, ByVal tit) dim URL, arquivo, parametros, sField, sValue, valor URL = "http://www.site.com.br/" If InStr(pag, ".asp" ) > 0 Then arquivo = Left( pag, ( InStr(pag, ".asp" ) -1) ) If InStr(pag, "?" ) Then parametros = Split( Right( pag , Len(pag) - InStr(pag, "?" ) ) , "&") For j = 0 To UBound( parametros ) sField = left ( parametros(j) , InStr( parametros(j) , "=") -1 ) sValue = Right( parametros(j) , Len(parametros(j)) - InStr( parametros(j) , "=") ) if valor = "" Then valor = sValue Else valor = valor &","& sValue End If Next End if End if If tit <> "" then tit = "/"& FormataTitulo( tit ) If cat <> "" then cat = "/"& FormataTitulo( cat ) End if Else tit = "/" End if If valor <> "" Then valor = "-" & valor&".html" End If urlAmigavel = URL & arquivo & cat & tit & valor End Function '--------------------------------------------------------------- Function ereg_replace(ByVal ereg_vetor, ByVal repl, ByVal valor) <pre> ereg_vetorV = Split(ereg_vetor, "-") If ubound(ereg_vetorV) > 0 Then charName = Split(ereg_vetorV(0),"|") For i_ereg = 0 To UBound(charName) valor = Replace(valor, charName(i_ereg), repl) Next If UBound(ereg_vetorV) >= 1 then charID = Split(ereg_vetorV(1),"|") If Join(charID) <> "" then For i_ereg = 0 To UBound(charID) valor = Replace(valor, "&#" & charID(i_ereg) & ";", repl) Next End if End if End If ereg_replace = valor End Function <pre>'---------------------------------------------------------------</pre> Function FormataTitulo( ByVal s ) s = Trim(s) s = LCase(s) s = ereg_replace("á|à|â|ã|ä|ª-@|224|225|226|227|228|229","a",s) s = ereg_replace("é|è|ê|ë-232|233|234|235","e",s) s = ereg_replace("í|ì|î|ï-236|237|238|239","i",s) s = ereg_replace("ó|ò|ô|õ|º|ö-242|243|244|245|246|186","o",s) s = ereg_replace("ú|ù|û|ü-249|250|251|252","u",s) s = ereg_replace("ç-231","c",s) s = ereg_replace("ñ","n",s) s = replace(s , "-", "") s = replace(s , "&", "") s = replace(s , " ", "-") s = replace(s , ",", "") s = replace(s , "?", "") s = replace(s , ":", "") s = replace(s , "/", "") s = replace(s , ".", "") s = replace(s , "'", "") s = replace(s , "´", "") s = replace(s , "&quot;", "") s = replace(s , "$", "s") s = replace(s , "!", "") s = replace(s , "%", "") FormataTitulo = s End Function</pre>
Despois de executar o procedimento acima sua implementação estará concluída e seu site já estará funcionando com URL’s amigáveis. Para quem possui conhecimentos de SEO, fique atento às visitas do seu site. Faça alguns estudos e identifique se o site obteve melhor posicionamento nos buscadores mais populares.
Se ainda houver dúvidas, sugestões ou qualquer comentário sobre o artigo, fique a vontade para deixar seu comentário. Ficarei feliz em poder ajudar.
Como referencia, deixo uma pagina (em ingles) que vai ajudar a debugar problemas com o .htaccess
Até breve.







Deixar mensagem para Oberdan Carlos Cancelar resposta