
Ferrari de R$ 2,5 milhões vira viatura de polícia
Bidvertiser e Skimlinks dinheiro na mão sem complicação
Pacotes de Idiomas do Office 2013 baixe gratuitamente (links oficiais)
Como limpar fila de impressão sem reiniciar o Windows
Habilitando a extensão Soap no PHP
Bateria do notebook: aumente a durabilidade com alguns cuidados
Cuidados com seu smartphone durante a praia
Saiba exatamente onde encontrar a gasolina mais barata da cidade
Como combinar vários arquivos de texto em um só arquivo
Síndrome rara faz a pessoa não conseguir tirar músicas da cabeça
Criando URLs amigáveis com .htaccess e PHP
- Tamanho da fonte: -A | +A
Imprimir
Enviar para um amigo-
Compartilhar
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.
Participe pelo Facebook:
10 Comentários - Deixe o seu !
Deixe uma resposta Cancelar resposta
- Procurando algum produto?
Publicidade



VC DISSE QUE http://exemplo.com/loja/cgi-bin/index.php?id=66754&produto=456&page=6
Poderia ficar assim:
http://exemplo.com/loja/meuproduto
E NÃO COLOCOU A FORMA DE TRANSFORMAR OS NÚMEROS (ID) EM UM NOME (MEUPRODUTO) CARA ME AJUDA POR FAVOR ME RESPONDE POR EMAIL!
é o seguinte, to desenvolvendo um site que vai ter uma pequena lista de notícias que abririam em notícia.php, to lutando e ainda nao consegui fazer a url amigável, gostaria que ficasse http://www.meusite.com.br/noticia/ano/mes/titulo.
e também as outras páginas gostaria de transformar todas em url amigável, o código é
RewriteRule ^home$ index.php
RewriteRule ^quem-sou$ quem-sou.php
RewriteRUle ^solucoes$ solucoes.php
RewriteRule ^portifolio$ portifolio.php
RewriteRule ^contato$ contato.php
mas sempre que coloco alguma coisa como o que você colocou acima da erro e ele não entra em mais nenhuma página dessas.
gostaria da sua ajuda, creio que são erros primários, mas to aprendendo agora….
Bom, primeiro verifique se o mod_rewrite esta ativo na config de seu apache, ele é um módulo responsável pela a reescrita transparente de URLs usando expressões regulares.
deve haver a linha: RewriteEngine On
Segundo, no RewriteRule você deve usar expressões regulares para definir as regras de sua URL.
Paciência é a melhor virtude do aprendiz!
e no caso de um sistema de notícias, passando o ano/mes/titulo da notícia?
abs.
Minha url esta assim:
http://www.meusite.com.br/index.php?cid=cascavel?&id=15
Gostaria dela desta forma:
http://www.meusite.com.br/cascavel/atual/cabelos-lindos-como-nunca-66-off-em-cauterizacao-reconstrucao-de-fios-escova-pe-ou-mao
Sendo que o texto:cabelos-lindos-como-nunca-66-off-em-cauterizacao-reconstrucao-de-fios-escova-pe-ou-mao é o titulo da oferta id=15
como fazer isso, pois tenho acessar o BD?
http://www.meusite.com/portal/?pg=noticia&id=1074
em:
http://www.meusite.com/portal/noticia/titulo-completo-da-noticia.html
tem como?
”
Como fazer url assim?
Minha url esta assim:
http://www.meusite.com.br/index.php?cid=cascavel?&id=15
Gostaria dela desta forma:
http://www.meusite.com.br/cascavel/atual/cabelos-lindos-como-nunca-66-off-em-cauterizacao-reconstrucao-de-fios-escova-pe-ou-mao
Sendo que o texto:cabelos-lindos-como-nunca-66-off-em-cauterizacao-reconstrucao-de-fios-escova-pe-ou-mao é o titulo da oferta id=15
como fazer isso, pois tenho acessar o BD?
Leia mais em: http://rotinadigital.net/wordpress/urls/#ixzz1qvfWLvNi
Under Creative Commons License: Attribution Non-Commercial
“.
Só sabem copiar tutoriais por aí e nem sequer estudam o que querem ensinar
Você terá que tratar a string “abelos-lindos-como-nunca-66-off-em-cauterizacao-reconstrucao-de-fios-escova-pe-ou-mao” para chamar provavelmente o campo título em seu BD.
No seu exemplo existem três parâmetros do tipo string: “cascavel”, “atual” e o título, o RewriteRule ficaria mais ou menos assim: ([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ index.php?cid=$1?&id=$2&titulo=$3
Não sou expert em URL amigáveis mas conseguir trabalhar com elas, e sim tive que estudar bastante para isso, se tiver mais alguma duvida pode perguntar, se eu souber a resposta terei prazer em responder, porém os comentários estão abertos para qualquer pessoa que queira contribuir.
T+..