URLs amigáveis, Linux e Windows
URLs amigáveis são URLs fáceis de se decorar para um visitante humano e fáceis de indexar para um visitante Robô.
Existem dois tipos de URLs, as estáticas e as dinâmicas, abaixo exemplos:
URLs estáticas:
http://www.meusite.com.br/artigo_dia_mes_ano.html
URLs dinâmicas:
http://www.meusite.com.br/artigo.php?cod=12&id=1&valor=10
Conforme podemos observar acima os dois tipos de URLs são de difícil memorização, agora um exemplo de URL Amigável:
http://www.meusite.com.br/artigo/dia/mes/ano
A princípio você pode pensar que não há problema algum com URLs estáticas e dinâmicas. Mas pense um segundo. Você consegue decorar facilmente uma URL desse tipo?
Além do problema da complexidade, essas URLs geram outros problemas:
- Alguns mecanismos de busca podem deixar de indexar estas páginas, por causa dos caracteres ‘?’ e ‘&’;
- A tecnologia usada na construção do site está sendo exposta;
- Se você resolver mudar a tecnologia do seu site (asp para php, por exemplo), todas as URLs terão que ser mudadas;
- Expor a tecnologia usada para fazer um site pode ser um problema de segurança
A solução é simples: mapear as URLs reais para URLs “virtuais”, mais fáceis de compreender e indexar, e independentes da tecnologia utilizada.
Vamos ver agora algumas dicas simples para trabalhar com rewrite para gerar URL amigáveis tanto para Linux Apache quando para Windows com IIS7.
URL amigável no Linux:
Apache mod_rewrite
mod_rewrite é um módulo escrito para o servidor Apache, responsável pela reescrita de URLs em páginas Web.
Hoje em dia, com a popularização de assuntos como SEO, usabilidade e acessibilidade, esta prática se tornou comum e está cada vez mais sendo utilizada por grande portais.
Para que as URL amigáveis funcionem o módulo mod_rewrite deve esta configurado e ativo no Apache.
Criado as regras:
O arquivo .htaccess deve esta localizado na pasta ROOT com o seguinte código:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cod=$1
Onde:
RewriteEngine On
Ativa o suporte à reescrita
RewriteCond %{SCRIPT_FILENAME} !-f
Não aplica a condição para arquivos
RewriteCond %{SCRIPT_FILENAME} !-d
Não aplica a condição para diretórios
RewriteRule ^(.*)$ index.php?cod=$1
Regra de reescrita onde qualquer string (.*) após a pasta, onde estiver o .htaccess, será interpretado por index.php passado na variável cod
Na pratica ficaria assim:
www.seusite.com.br/secao/subsecao/
será interpretada como
www.seusite.com.br/index.php?cod=secao/subsecao/
Apache Module mod_rewrite
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
URL amigável no Windows
Microsoft URL Rewrite Module 2.0 for IIS 7
Com o URL Rewrite é possivel interceptar qualquer tipo de requisição seja ela ASP, ASP.NET, Perl, PHP ou HTML, e reescrever a URL antes que ela seja processada pelo IIS. A configuração é feita de forma fácil e intuitiva, atendendo tanto usuários experientes quanto os mais iniciantes.
Criado as regras:
O arquivo web.config deve esta localizado na pasta ROOT com o seguinte codigo:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rule IIS7">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{SCRIPT_FILENAME}" matchType="IsFile"
ignoreCase="false" negate="true" />
<add input="{SCRIPT_FILENAME}"
matchType="IsDirectory" ignoreCase="false"
negate="true" />
</conditions>
<action type="Rewrite" url="index.php?cod={R:1}"
appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Onde:
<action type="Rewrite" url="index.php?cod={R:1}" appendQueryString="false" />
Regra de reescrita onde qualquer string (.*) após a pasta, onde estiver o web.config, será interpretado por index.php passado na variável cod
Na pratica ficaria assim:
www.seusite.com.br/secao/subsecao/
será interpretada como
www.seusite.com.br/index.php?cod=secao/subsecao/
Download do módulo URL Rewrite:
x86 version of the URL Rewrite module
x64 version of the URL Rewrite module
http://www.iis.net/download/URLRewrite
Usando URL Rewrite:
http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
Para converter as regras de .htaccess para web.config acesso o link abaixo:
http://learn.iis.net/page.aspx/470/importing-apache-modrewrite-rules/
Interpretando com PHP
Com o arquivo de reescrita criado, já podemos criar a lógica para que as URL amigáveis sejam interpretadas pelo PHP.
Veja um exemplo auto-explicativo:
<?php
// separa a URL por "/" e insere num vetor (array)
$url = explode(’/', $_GET['cod']);
/* imprime a string passada após a primeira / * no exemplo acima, seria: seção */
echo $url[0];
/* imprime a string passada após a segunda / * no exemplo acima, seria: subseção */
echo $url[1];
?>
Espero ter ajudado, até a próxima.



