Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Teu

[Resolvido] URL Amigável com PHP

Recommended Posts

Ei Galera, bom dia!

 

Gente, ja quebrei a cabeça tentando entender o bendido do .htaccess mas não consegui, alguém pode me ajudar?

Estou pegando os dados do mysql normamente como sempre fiz estou exibindo o conteudo normamente mas na barra de endereços o link é exibido da seguinte forma:

 

www.meusite.com.br/artigos.php?cod_artigo=2

 

esta url exibe a noticia: Gerra no Oriente médio

 

Então estou precisando exibir a url da seguinte forma

 

www.meusite.com.br/artigos/gerra_no_oriente_medio.php

 

Alguém sabe me dizer como fazer isso? Não faço ideia de como fazer.

 

Obrigado Galera!

^_^

Teu

=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, estou reabrindo o tópico aqui porque tem uma coisa que não entendi.

 

Eu primeiro criei o arquivo .htaccess com o código abaixo:

 

RewriteEngine On
RewriteRule ^(.+)\/?([0-9]*)\/?$ /artigos.php?s=$1

 

O meu arquivo artigos.php é recebe uma outra página com o conteúdo dos artigos ficando da seguinte forma:

 

artigos.php

<?php
require("conteudo_artigos.php");
?>

 

Na página conteúdo_artigos que tem a instrução sql que traz do banco todos os artigos fazendo assim uma lista com o titulo de todos eles, então, montei o link da seguinte forma para exibir o conteúdo do artigo solicitado:

 

<a href=artigos.php?cod_artigo=<?php echo($dadosdb['id'])><?php echo($dadosdb['titulo'])</a>

 

Queria saber onde eu monto a url amigável dentro deste arquivo, pois não estou entendendo isso.

 

Obrigado.

Teu

Compartilhar este post


Link para o post
Compartilhar em outros sites

trocando:

<a href=artigos.php?cod_artigo=<?php echo($dadosdb['id'])><?php echo($dadosdb['titulo'])</a>

por

<a href="<?php echo $dadosdb['titulo']; ?>/<?php echo $dadosdb['id']; ?"><?php echo $dadosdb['titulo']; ?></a>

 

se é que eu entendi a sua dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então ao inves de exbir assim:

 

<a href=artigos.php?cod_artigo=<?php echo($dadosdb['id'])><?php echo($dadosdb['titulo'])</a>

www.meusite.com.br/artigos.php?=cod_artigo=20 que faz referência a noticia gerra ao terror

 

seria assim?

 

<a href="<?php echo $dadosdb['titulo']; ?>/<?php echo $dadosdb['id']; ?"><?php echo $dadosdb['titulo']; ?></a>

www.meusite.com.br/guerra_ao_terror/20/guerra_ao_terror

 

acho que eu preciso mostar assim:

www.meusite.com.br/artigos/guerra_ao_terror

 

Entendeu!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi sim, e você?

 

 

da forma que mostrei, o link ficaria www.meusite.com.br/guerra_ao_terror/20/

a segunda parte que coloquei, é a palavra clicavel.

 

 

 

se você precisa mostrar de outra forma, então monte assim.

 

mas corrija a Expressão Regular da RewriteRule, para entender isso ai, e traduzir para o servidor o que era antes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu to perdido..rsrs

 

Perdoa minha ignorância sobre este assunto, então posso montar o link assim:

 

<a href="artigos/<?php echo $dadosdb['titulo']; ?>"><?php echo $dadosdb['titulo']; ?></a>

 

será que aparece na url assim:

 

www.meusite.com.br/artigos/guerra_ao_terror sem entender que artigos é um diretório?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

só se você editar a tua regra, pois com essa aqui:

RewriteRule ^(.+)\/?([0-9]*)\/?$ /artigos.php?s=$1

isso que você quer não vai funcionar.

 

Estou retirando o [Resolvido] do título.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, William, vou editar minha regra para:

 

RewriteRule ^artigos/([a-z0-9-]+)/([0-9]+)/?$ /artigos.php?s=$2

 

Essa variavel s=$2 é quem vai receber deverá ficar assim no arquivo?

 


//pega o id do artigo
$cod = $_GET['s'];

"SELECT * FROM artigos WHERE id_artigo = '$cod'";

//monta o link para exibir o artigo
<a href="artigos/s/<?php echo $dadosdb['titulo']; ?>"><?php echo $dadosdb['titulo']; ?></a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai testando cara.. mas olha:

isso:

artigos/([a-z0-9-]+)/([0-9]+)/

não ta batendo com isso:

artigos/s/<?php echo $dadosdb['titulo']; ?>

 

esse /s não existe na ER, e a ER espera receber depois do titulo, alguns numeros, e você não ta enviando nenhum.

 

vai fazendo e testando.. vai aos pooucos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui editar o arquivo .htaccess da seguinte forma:

 

se eu quero exibir primeiro o id e deopois o titulo do texto eu coloquei assim:

 


RewriteRule ^artigos/[0-9]{3,9}-(.*)/?$ /artigos.php?id=$2&titulo=$1 [NC,L]

 

Essa rewriteRule é para exibir a url desta forma: www.meusite.com.br/artigos/2/guerra_ao_terror

 

então para passar para o link fiz da seguinte forma:

 

<a href="artigos.php/<?php echo nl2br ($dadosdb_opcao['id_artigo']); ?>/<?php echo nl2br($dadosdb_opcao['titulo_artigo']); ?>"><?php echo nl2br($dadosdb_opcao['titulo_artigo']); ?></a>

 

exibe a url da seguinte forma: www.meusite.com.br/artigo/2/guerra ao terror mas o conteúdo não muda e a página perde a formatação css

Compartilhar este post


Link para o post
Compartilhar em outros sites
mas o conteúdo não muda e a página perde a formatação css

?

 

faça um debug:

<?php 
echo '<pre>';
var_dump( $_GET );

veja oque sair e entenda.

 

qnto a formatação, veja sobre a tag <base />, ou faça uma regra mais especifica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!

O erro tava na regra do .htaccess que foi substituida com ajuda do Matheus Tavares!!! :clap:

 

RewriteRule artigo/([0-9]{1,5})/?[a-zA-Z0-9-]* artigos.php?id=$1

 

Outra coisa que entendi, e que não estava entendendo, era como pegar o valor da RewriteRule, então ficaria assim:

artigos.php?id=$1

 

Esse id=$1 tem que ser pego pelo GET assim:

 

$variavel = $_GET['id']

ai é só jogar ele na consulta SQL e sair pro abraço!!!!

 

Valeu pela força!

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.