URLs amigáveis contribuem para um melhor posicionamento nos motores de busca, e como o próprio nome diz são mais fáceis de serem assimiladas pelos usuários, as pessoas  já podem ter uma noção do assunto da página simplesmente lendo seu endereço, vejam um exemplo:
Essa URL:
http://exemplo.com/index.php?&produto=456&page=6
Poderia ficar assim:
http://exemplo.com/nome-do-produto/6
Neste post vamos explicar sobre técnicas de reescrita de URLs usando o módulo mod_rewrite e o arquivos .htaccess no servidor apache. Esse tutorial foi escrito originalmente por Srinivas Tamada de 9lessons  com dois tipos de URLs amigáveis com base no Flickr e Twitter.
URL amigáveis estilo Flickr

Observamos que existem dois parâmetros: “id=polvero” e “page=2″ para alcançar este resultado, vamos adicionar o seguinte código em o nosso .htaccess:

//usando URL com um parâmetro (tipo string)
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ users.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ users.php?user=$1
 
//usando URL com dois parâmetros (uma string e um int)
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ users.php?user=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ users.php?user=$1&page=$2
URL Original
http://flickr.com/users.php?id=username&page=2
URL amigável
http://flickr.com/username/2
No exemplo acima estaremos recebendo uma string e um numero como parâmetros, se quiser usar apenas palavras repita a expressão “^([a-zA-Z0-9_-]+)”  separada por barras “/” para especificar suas variáveis.
Nota: É possível adicionar facilmente extensões ao final de nossas URL amigáveis, por exemplo:
http://exemplo.com/loja/meuproduto.html
Basta acrescentar a extensão no final da expressão regular, veja:
^([a-zA-Z0-9_-]+)/([0-9]+)/$  ficaria ^([a-zA-Z0-9_-]+).html$


URL amigáveis estilo Twitter

Olhando a imagem, percebemos que não pode haver um usuário “login”, “home” ou “terms”, isto é possível através de um filtro com palavras reservadas no momento da inscrição, para atingir o objetivo vamos combinar um pouco de PHP com o nosso .htaccess.
Código .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?key=$1 
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1
Código PHP (index.php)
switch($_GET['key'])
{
case 'home': include('home.php');break;
case 'login': include('login.php');break;
case 'terms': include('terms.php');break;
case 'users':include('users.php');breaak;
default: include('404.php');
}
O principio básico para criação de uma URL amigável é montar a expressão regular que vai receber o parâmetros passado pela URL e repassar para o endereço real do script PHP que estará especificado dentro do .htaccess, de começo pode parecer meio complicado, mas depois que você pegar “as manhas” verá que não é tão difícil assim.
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ users.php?user=$1&page=$2
É importante observar que todos os parâmetros necessários para  realizar a consulta devem ser passados para seu script, vamos olhar novamente o exemplo do começo do artigo:
http://exemplo.com/loja/cgi-bin/index.php?produto=456&page=6
Para chegar no resultado esperado, nos teremos que passar os dois parâmetros (produto e page) dentro da URL, para poder fazer as coisas funcionarem corretamente.
Se você tiver a possibilidade de fazer modificações na estrutura do banco de dados, então podemos considerar a possibilidade de criação de um novo campo exclusivamente para guardar uma variável associada a nossa URL amigável:
CREATE TABLE IF NOT EXISTS `Produtos` (
`fieldID` BIGINT(32) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Quantidade` BIGINT(32) NOT NULL,
`Nome` VARCHAR(255) NOT NULL DEFAULT '',
`Descricao` VARCHAR(255) NOT NULL DEFAULT '',
`slug` VARCHAR(255) NOT NULL DEFAULT '',
 
)
Assim, agora também podemos consultar o produto pelo campo slug:
http://exemplo.com/index.php?slug=nome-do-produto
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?slug=$1
O resultado:
http://exemplo.com/nome-do-produto
Dica: É importante sempre usar os comandos RewriteCond %{REQUEST_FILENAME} !-f  e RewriteCond %{REQUEST_FILENAME} !-d, eles servem para evitar que as regras sejam aplicadas caso existam arquivos ou diretórios reais, com nomes iguais aos solicitados pela URL amigável.

Leia mais em: http://rotinadigital.net/wordpress/urls/#ixzz2GpizWXNj
Under Creative Commons License: Attribution Non-Commercial

Welcome to My Blog



Popular Post

- Copyright © DICAS PARA MICROS -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -