Atualizado em 05 de Fevereiro de 2014

Criando Urls Amigáveis com PHP

Olá pessoal,

Você sabe o que é Urls Amigáveis? Você sabia que a Url das páginas de um site têm muita importância, seja para seu visitante, para buscadores e até para a segurança do site.

O post de hoje tá mais do que especial, eu criei um Mini-curso no Portal Aprendendo PHP de como Criar Urls Amigáveis com PHP e o melhor é Grátis, basta fazer um cadastro gratuito no Portal.

Neste Mini-curso você irá aprender a como criar Urls Amigáveis com PHP utilizando o arquivo de configuração .htaccess, para acessar clique aqui.

Ver Mini-curso Aprendendo a Criar URLs Amigáveis com PHP


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)


Até a próxima.

Comentários

Sua foto do perfil

nuno

ois mauricio, já consegui colocar o site amigavel, só nao estou conseguindo colocar a função geradortags a substituir acentos, ela os traços coloca mas nas letras com acento aparece na bd com ?
o que será?
obrigado

05 de Outubro de 2015 - 12:09

Sua foto do perfil

Mauricio Programador

Olá Nuno,

Isso acontece por causa do tipo de acentuação no qual a pagina esta configurado, mas a solução e bem simples.

Você vai ter que usar assim:

$url = geradorTags(utf8_decode($_POST['nome_produto']));

ou

$url = geradorTags(utf8_encode($_POST['nome_produto']));

Teste e me avise qualquer coisa.

Abraço.

07 de Outubro de 2015 - 15:32

Sua foto do perfil

nuno

ola Mauricio
eu inicialmente tinha o conteudo a ir buscar a um verifica_page.php , para chamar os ficheiros seria index.php?page=2 e assim sucessivamente....estou a tentar fazer como dizes mas ele não me está a abrir os conteudos, consegue mudar o url da pagina mas os conteudos não abre...ou seja não está a conseguir ir para página
obrigado

01 de Setembro de 2015 - 09:35

Sua foto do perfil

Mauricio Programador

Olá Nuno,

Me mande o seus arquivos, para o email de dúvida que mostra na vídeo aula, dai eu testo aqui no meu computador.

Fico no aguardo.

Abraço.

04 de Setembro de 2015 - 11:07

Sua foto do perfil

EroSenin

Boa tarde, não consegui achar o script do banco de dados, teria como você disponibilizar?
Desde já agradeço.

23 de Julho de 2015 - 13:55

Sua foto do perfil

Mauricio Programador

Olá EroSnin,

Atualizei o arquivo lá no Portal agora com o banco de dados, pode baixar novamente que vai ter o banco de dados junto com os arquivos compactados.

Abraço.

23 de Julho de 2015 - 14:10

Sua foto do perfil

EroSenin

Boa tarde Maurício, obrigado por disponibilizar.
Cara assisti a VA, mas não consegui desenvolar uma coisa, no meu site de teste aqui estou usando a seguinte extrutura:

/
/app
/app/public/css
/app/public/js
/app/pages (onde ficam as páginas: 'sobre', 'dicas', 'produtos', 'servicos', 'promocoes', 'contato', '404', etc.)

deixei assim o código:

// CONSTANTES DO SITE
define('HOME', 'http://127.0.0.1/SiteTeste/');
define('CSS', 'app/public/css');
define('JS', 'app/public/js');
define('IMG', 'app/public/img');
define('PAGES', 'app/pages/');

define('INCLUDE_PATH_CSS', HOME . CSS);
define('INCLUDE_PATH_JS', HOME . JS);
define('INCLUDE_PATH_IMG', HOME . IMG);

// URL AMIGÁVEIS
$paginas = array('sobre', 'dicas', 'produtos', 'servicos', 'promocoes', 'contato', '404');
$url = explode('/', $_GET['url']);
$pasta = $url[0];
$arquivo = $url[1];
$identificador = $url[2];

Nas chamadas:
<link rel="stylesheet" href="<?php echo INCLUDE_PATH_CSS ?></style.css">
<img src="<?php echo INCLUDE_PATH_IMG ?>/logo.png">
<script src="<?= INCLUDE_PATH_JS ?>/jquery-1.10.2.min.js"></script>

Na index:
if($arquivo != '' || $arquivo != null && in_array($arquivo, $paginas)):
include_once PAGES.'$arquivo.php';
elseif($arquivo == '' || $arquivo == null):
include_once PAGES.'home.php';
else:
include_once PAGES.'404.php';
endif;

Só que o link para as páginas no menu não consegui fazer funcionar. Teria como dar uma ajuda?
Desde já obrigado pela atenção.

24 de Julho de 2015 - 12:39

Sua foto do perfil

Mauricio Programador

EroSenin,

Bom vamos lá para ver se consigo te esclarecer as suas duvidas.

Primeiro a constante que criamos e para ficar com a URL do Site, por tanto você não precisa criar uma para cada pasta que tiver na site estrutura.

Você apenas precisa colocar ela e a pasta depois, ficando assim:

/NOME_PASTA/NOME_ARQUIVO.EXTENSAO

Pois fazendo varias o seu gerenciamento para dar uma manutenção por exemplo fica muito ruim.

Quando ao link não tem como eu responder pois não sei como esta montado o seu link.

Mas faz assim, corrija o que te passei acima e depois me envio o arquivo por email que eu vejo para você.

Abraço.

24 de Julho de 2015 - 12:50

Sua foto do perfil

Cleydson

Ola meu amigo sou iniciante na programação web mais ja fiz minha primeira aplicação

quero pedi ate pelo amor de deus que me ensine como eu faço as urls amigaveis pois ja assisti e li todos tutorias da net e nao consigo entender....


minha url
http://localhost/p1-versao2/estrutura/noticias/ver_noticias.php?id=1

queria que ficasse assim
http://localhost/p1-versao2/estrutura/noticias/ver-demo-demo
mais ou menos assim

consigo fazer todo o tratamento "retirar sinais e espaços e gravar o resultado no banco" que fica assim ----- prefeito-de-teresina-piaui

agora nao sei como faz pra isso folta la pro link da pagina ... por favor me ajude

11 de Julho de 2015 - 00:05

Sua foto do perfil

Mauricio Programador

Olá Cleydson,

Você assistiu o Mini Curso que eu disponibilizei gratuitamente neste post? ele mostra de forma completa como fazer isso. Consegui assistir?

Abraço.

13 de Julho de 2015 - 11:30

Sua foto do perfil

Renato Oliveira Formenton Filho

Maurício muito bom seus arquivos, mas no download não consta o Banco de Dados com as tabelas, poderia por gentileza enviar? Até!

06 de Janeiro de 2015 - 15:12

Sua foto do perfil

Mauricio Programador

Olá Renato,

mandei para o seu e-mail.

abraço.

07 de Janeiro de 2015 - 08:44

Sua foto do perfil

rikardo

Olá Mauricio,

No meu site tem paginação, depois que coloquei a url amigável ele não funciona.
oque tem que acrescentar no código pra deixar a paginação também amigavel? (site/noticias/pag/2) desde já agradeço!

21 de Junho de 2014 - 12:17

Sua foto do perfil

Mauricio Programador

Olá rikardo,

você irá precisar criar apenas mais uma variável, por exemplo sua url pode fica assim:

.../noticias/2

Sendo que o 2 e pagina, então no PHP fica assim:

$url = explode('/', $_GET['url']);
$arquivo = $url[0];
$identificador = $url[1];
$paginacao = $url[2];

Dai basta usa a variável $paginacao onde houver a paginação.

Abraço.

21 de Junho de 2014 - 13:43

Sua foto do perfil

Rikardo

Mauricio, até nessa parte intendi.
sem url amigável a paginação aparece dessa forma: site/noticias.php?pag=2
A minha duvida persiste de que forma utiliza a variável $paginação.
Oque será precisa incrementar no código abaixo?

<?php
if($arquivo != '' && in_array($arquivo, $paginas))
{
include "$arquivo.php";

}

elseif($arquivo == '')

{

include 'home.php';

}

else

{

include '404.php';

}

?>

23 de Junho de 2014 - 10:34

Sua foto do perfil

Rikardo

Olá Mauricio, agradeço pela sua sua ajuda e já consegui resolver o problema.

Estou com um outro problema, depois que hospedei o site, até aparece a url amigável quando coloca o mouse em cima do link, mas quando clico ele redireciona para a pagina de erro do servidor. Oque pode ser esse problema? o que devo fazer?
Desde já Agradeço!

23 de Junho de 2014 - 10:35

Sua foto do perfil

Mauricio Programador

Olá Rikardo,

Quem bom que conseguiu.

Você esta usado a URL absoluta? Ex.:

define('url', 'http://localhost/empresa_x');

e usando elas nos links? Ex.:

<a href="<?php echo url?>/noticia"...

Fico no aguardo.

23 de Junho de 2014 - 10:36

Sua foto do perfil

Rikardo

Olá Mauricio, o problema foi identificado no arquivo .htaccess
a extensão estava salva com letras maiúscula e o servidor de hospedagem não estava reconhecendo esse aquivo apenas no servidor local. Já alterei e finalizei o meu projeito. :)

Você está de parabéns, pelas vídeo-aulas bem explicado e pela agilidade nas respostas nos comentários!

24 de Junho de 2014 - 10:40

Sua foto do perfil

Mauricio Programador

Olá Rikardo,

fico feliz que tenha conseguido e gostado do material.

Precisando estamos ai para ajudar. Grande Abraço.

24 de Junho de 2014 - 10:40

Sua foto do perfil

Igor Sousa

Olá mauricio, tenho um site de vendas de cães.
tem uma pagina q ta assim:
fotos.php?id=1&ninhada=h e qeria q fosse assim:
fotos/ninhada/h

e tbm n sei colocaar os codigos q modifica os links

08 de Março de 2014 - 21:49

Sua foto do perfil

Mauricio Programador

Olá Igor,

este mini-curso mostra exatamente como fazer isso que você deseja. Chegou a assistir todo? o que você não conseguiu? Posta aí.

Abraço.

09 de Março de 2014 - 10:36

Sua foto do perfil

Igor Sousa

Olá mauricio, assisti a sua video aula mais num consigo passar o jeito pra meu site
a parte que tenho mais dúvidas é como fazer o link pra pagina de exibir os daddos.
o meu ta assim:
<a href="artigos.php?exibir&id=<?php echo $row_artigos['id'];?>
&titulo=<?php echo $row_artigos['url'];?>"><?php echo $row_artigos['titulo'];?></a>

eu nao consigo tirar os parametos: exibir,id e nem o titulo.

e tbm nao sei como fazer pra pagina artigos receber os dados.

20 de Março de 2014 - 09:43

Sua foto do perfil

Mauricio Programador

Olá Igor,

Pelo que vi pelo link você deve estar guardando a URL do post na variável $row_artigos['url'], então seu link ficaria assim:

...href="[endereço do site completo]/artigos/<?php echo $row_artigos['url'];?>">...

So não esqueça de configura o arquivo .htaccess como mostra na vídeo-aula.

Depois no SQL da pagina arquivos para fazer a busca pelo registro basta buscar pelo campo URL com o valor passado na variável $identificador da função:

$url = explode('/', $_GET['url']);
$arquivo = $url[0];
$identificador = $url[1];

Espero ter ajudado.

Abraço.

20 de Março de 2014 - 09:44

Sua foto do perfil

Igor Sousa

eu fiz um sistema pra mais simples pra vc vê como to enrolado..kk

Pagina index.php{

<?php include("conn.php"); ?>
<html><head><title>Url Amigáveis</title></head>
<body>
<?php
$query_url = mysql_query("SELECT * FROM noticia");
$row_url = mysql_fetch_array($query_url);
$id = $row_url['id'];
$slug = $row_url['slug'];
?>

<?php do{?>

<a href="artigos.php?id=<?php echo $id;?>&slug=<?php echo $slug;?>">
<?php echo $row_url['titulo'];?><br></a>

<?php }while($row_url = mysql_fetch_array($query_url));?>
</body>
</html>

Agora ...
Pagina artigos.php

<?php include("conn.php"); ?>
<html><head><title>Url Amigáveis</title></head>
<body>

<?php
$id = $_GET['id'];
$query_url = mysql_query("SELECT * FROM noticia WHERE id = $id");
$row_url = mysql_fetch_array($query_url);
?>

<h1><?php echo $row_url['titulo'];?></h1>

</body>
</html>

Ficarei muito alegre se eu aprender criar url amigaveis iguais as suas de seu site....
Abraço...

20 de Março de 2014 - 14:45

Sua foto do perfil

Mauricio Programador

Olá amigo,

Bom vamos lá, pela estrutura que você me mandou ficaria assim:

index.php

<?php
include("conn.php");

define('url', 'http://localhost/empresa_x');

$paginas = array('artigos');

$url = explode('/', $_GET['url']);
$arquivo = $url[0];
$identificador = $url[1];
?>
<html><head><title>Url Amigáveis</title></head>
<body>
<?php
if($arquivo != '' && in_array($arquivo, $paginas))
{
include "$arquivo.php";
}
elseif($arquivo == '')
{
include 'home.php';
}
else
{
include 'pagina-nao-encontrada.php';
}
?>
</body>
</html>

Dai vai ter que criar um arquivo com o nome home.php e colocar:

<?php
$query_url = mysql_query("SELECT * FROM noticia");
$row_url = mysql_fetch_array($query_url);
$id = $row_url['id'];
$slug = $row_url['slug'];
?>

<?php do{?>

<a href="<?php echo url?>/artigos/<?php echo $slug;?>">
<?php echo $row_url['titulo'];?><br></a>

<?php }while($row_url = mysql_fetch_array($query_url));?>

Depois na página artigos.php, fica assim:

<?php
$id = $_GET['id'];
$query_url = mysql_query("SELECT * FROM noticia WHERE url = '$identificador'");
$row_url = mysql_fetch_array($query_url);
?>

<h1><?php echo $row_url['titulo'];?></h1>

Abraço.

20 de Março de 2014 - 14:58

Sua foto do perfil

Igor Sousa

entendi agora a estrutura, mas no .htaccess não acertei...

21 de Março de 2014 - 10:05

Sua foto do perfil

Igor Sousa

Olá Mauricio, consegui criar as urls amigaveis.
Pela estrutura que vc me indicou, alterei umas coisinhas e deu certinnho
mudei todo conteudo do index para o home.
Essa é a pagina 'index.php'
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Programação Ativa</title>
</head>

<body>
<?php
define('url', 'http://localhost/programacaoativa');
if(!isset($_GET['url'])){
include("home.php");
}else{

nesse else queria colocara pagina 404.php, tipo se nao tiver nenhuma pagina do site , ela chamar 404.php

}

?>
</body>
</html>

Esse foi a modificação que fiz na pagina detalhes
<?php
$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];

$url = explode('/',$url);

echo @$url[0].'<br />';
echo @$url[1].'<br />';
echo @$url[2].'<br />';
$cod = @$url[3].'<br />';
$titulo = @$url[4].'<br />';
echo @$url[5].'<br />';
echo @$url[6].'<br />';
echo @$url[7].'<br />';
?>

já o link ficou assim:
<a href="http://localhost/programacaoativa/post/<?php $cod ; ?>/
<?php $slug ; ?>" class="label"><?php echo $row_lista_veja['titulo'] ; ?>
</a>

já no htaccess ficou assim.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^home$ home.php
RewriteRule ^post(.*)$ detalhes.php

e minha url ficou assim :

http://localhost/programacaoativa/post/27/painel-de-ferramentas-no-photoshop-cs6

Obg pelas dicas, vc me ajudou muito, já tava com uma semana pesquisando em vários sites e nada de eu conseguir nada.

agora eu qeria era criar esse newlwtter e pra que serve sua função no site....

21 de Março de 2014 - 10:10

Sua foto do perfil

Mauricio Programador

Olá Igor,

que bom que conseguiu, fico feliz em ter ajudado. Ja a função de newsletter basta você usar a função mail do PHP, busca aqui no blog por esta função que você vai encontrar como enviar e-mail pelo PHP.

Abraço e sucesso.

21 de Março de 2014 - 10:11

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER