Tags: URL, amigável, .htaccess, Apache, mod_rewrite, RegEx
Semana passada busquei, estudei e encontrei um maneira legal para trabalhar com URL-amigável, retirar os benditos parametros estranhos (?s=1&m=2) da URL e colocar algo mais amigável para os indexadores de pesquisa e memorização do leitor. O artigo a seguir é para tranformar links assim http://www.site.com.br/processador.php?s=secao&m=materia em links assim http://www.site.com.br/secao/materia.html, "bunitinho" né ;).
Primeiro de tudo veja se estar ativo o Módulo mod_rewrite no Apache no httpd.conf, feito isto na raiz do site crie um arquivo .htaccess com um editor de texto tipo notepad e adicione a informação abaixo:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z]*)\/([a-zA-Z]*)\.html$ /unideia/processador.php?s=$1&m=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ /unideia/processador.php?s=ERRO&u=$1 [L,QSA]
</IfModule>
Agora comentarei linha a linha as informações do .htaccess
-- EXECUTA O QUE ESTIVER DENTRO DO IF SE O MÓDULO FOR ENCONTRADO
<IfModule mod_rewrite.c>
-- ATIVA A REESCRITA PARA ESTA PASTA
RewriteEngine On
-- DESATIVA A REESCRITA PARA ARQUIVOS
RewriteCond %{REQUEST_FILENAME} !-f
-- DESATIVA A REESCRITA PARA PASTAS
RewriteCond %{REQUEST_FILENAME} !-d
-- DESATIVA A REESCRITAS PARA LINKS
RewriteCond %{REQUEST_FILENAME} !-l
-- CRIA A REGRA VIA REGEX PARA A ESCRITA, OU SEJA NA URL http://www.site.com.br/secao/materia.html ELE CHAMARA O ARQUIVO PROCESSADOR.PHP PASSANDO COMO PARAMETROS **GET** S=SECAO E M=MATERIA
RewriteRule ^([a-zA-Z]*)\/([a-zA-Z]*)\.html$ /processador.php?s=$1&m=$2 [L,QSA]
-- AGORA A GRANDE SACADA (POR GENTILEZA, SE ALGUEM TEVE UMA IDÉIA MELHOR SOU TODO OUVIDOS), CASO ALGUEM TENTE FORÇAR ALGO, OU DIGITE UMA URL ERRADA ELE TRATA ISSO TAMBEM
-- DESATIVA A REESCRITA PARA ARQUIVOS
RewriteCond %{REQUEST_FILENAME} !-f
-- DESATIVA A REESCRITA PARA PASTAS
RewriteCond %{REQUEST_FILENAME} !-d
-- DESATIVA A REESCRITAS PARA LINKS
RewriteCond %{REQUEST_FILENAME} !-l
-- CRIA A REGRA VIA REGEX PARA A ESCRITA, OU SEJA NA URL http://www.site.com.br/?i=1&s=1 ELE CHAMARA O ARQUIVO PROCESSADOR.PHP PASSANDO COMO PARAMETROS **GET** E=ERRO E U=?i=1&s=1
RewriteRule ^(.*)$ /processador.php?e=ERRO&u=$1 [L,QSA]
</IfModule>
Pronto, agora é só criar um arquivo processador.php para tratar os parametros recebidos e chamar os arquivos corretos.
Espero ter ajudado, qualquer dúvida ou sugestão deixe seu comentário.
Nenhum comentário:
Postar um comentário