Ir para conteúdo

Manipulando Url Com .htaccess Avançado


Nostradamus

Posts Recomendados

Hoje em dia é muito comum o uso de scripts que rodam no servidor (server-side) para gerar conteúdo dinâmico em páginas web.

 

Isto é muito interessante, mas gera um problema: URLs grandes ou complicadas demais, difíceis de memorizar e sem significado, que podem até mesmo dificultar a indexação do site por mecanismos de busca.

 

Vamos aprender como criar URLs amigáveis, indexáveis e que resumam, de alguma forma, o recurso que elas descrevem.

Obrigado VaL por me mostrar a novidade!

 

Introdução

Todo mundo já deve ter visto urls desse modo ou piores,

 

http://www.seusite.com.br/index.php?sessao...;ano=2006-08-24

 

que tal muda para:

 

http://www.seusite.com.br/artigos/10/12/2006

 

O que é mod_rewrite?

 

mod_rewrite é um módulo do apache que realiza a reescrita transparente de URLs usando expressões regulares.

É como se fosse um redirecionamento, só que o usuário não fica sabendo que a página foi reescrita, já que o endereço na barra de endereços do browser não muda e nenhum cabeçalho HTTP 3xx é enviado.

 

Passo a passo

 

O primeiro passo é criar um arquivo htaccess no diretório raiz do seu site e acrescentar a linha:

 

RewriteEngine On

Esta linha habilita o uso do mod_rewrite no seu site.

 

1º Exemplo

 

RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo1.php?dia=$1&mes=$2&ano=$3

 

Vamos entender a linha acima:

RewriteRule: define o início de uma regra de reescrita.

([a-z,0-9,A-Z,_-]+): Todos os caracteres (Números e Letras) + _ -

\/: barras.

\/?: uma barra ou vazio.

 

2º Exemplo

url: http://www.seusite.com.br/artigos/10/12/2006/30

 

RewriteRule ^artigos\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo2.php?sessao=artigos&dia=$1&mes=$2&ano=$3&id=$4

 

Qual a diferença entre o 1º Exemplo para o 2º Exemplo?

Amigos, a diferença e q ele manibua uma url /artigos/ somente se for www.seusite.com.br/artigos/10..., caso seja www.seusite.com.br/10/10/2006, ele não ira executar a 2ª regra.

 

Exemplos

 

.htaccess

 

RewriteEngine on
RewriteRule ^artigos\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo2.php?sessao=artigos&dia=$1&mes=$2&ano=$3&id=$4
RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ exemplo1.php?dia=$1&mes=$2&ano=$3

 

exemplo1.php

 

<?php
echo "<font face=verdana size=1><b>Digita via url amigáveis:</b> $dia/$mes/$ano</font>"
?>

 

exemplo2.php

 

<?php
echo "<font face=verdana size=1><b>Digita via url amigáveis:</b>
<br><b>Sessão:</b> $sessao
<br><b>Dia:</b> $dia
<br><b>Mes:</b> $mes
<br><b>Ano:</b> $ano
<br><b>Id:</b> $id

</font>"
?>

 

Fonte: PHP5 Brasil

 

Qualquer dúvidas, poste aqui.

Editado por Nostradamus
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...