Ir para conteúdo

POWERED BY:

Arquivado

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

Prove Yourself

URL Rewrite com título ao invés do id

Recommended Posts

No momento que você cadastrar a notícia grave no banco, e uma coluna específica o título que deverá ser usado na URL, só lembre-se de conferir para ver se já não existe uma notícia com o mesmo título. Na hora de resgatar, basta pegar o título que for passado na URL e buscar no BD na coluna específica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo:

 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^noticias\/([0-9a-zA-Z-]+)$ noticia.php?titulo=$1 [L]

Nesse caso ele vai pegar tudo o que estiver depois de noticias/ e jogar para o arquivo noticia.php, nesse arquivo você resgata o titulo usando $_GET['titulo']... ali só serão aceitos caracteres alfanuméricos e o hífem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pega aquilo que eu passei e coloca num arquivo .htaccess, tenha certeza que no teu servidor o mod_rewrite está ativo (consulte o suporte), crie um arquivo noticias.php e dentro dele resgate o título da notícia com $_GET['noticia'], é isso ai. Não precisa criar nenhuma pasta chamada noticias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu até entendo a reescrita normal, já fiz algumas vezes. Entendo as expressões regulares. Só não consigo entender como que, a URL vai passar a ter o título só pq eu vou resgatar o valor de $_GET['noticia']...

Desculpa a ignorancia. Não consigo fazer isso entrar na minha cabeça :P

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela não vai passar a ter o título porque você vai resgatar, você vai montar a URL

http://www.meusite.com.br/noticias/titulo_da_noticia

 

E através do:

RewriteRule ^noticias\/([0-9a-zA-Z-]+)$ noticia.php?titulo=$1 [L]

Você está dizendo para pegar tudo que está após o noticias e passar para a página noticia.php através da variável titulo (titulo=$1).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas para pegar o conteudo da página eu vou ter que selecionar o título e não o ID?

 

Como você selecionaria pelo ID se você está passando na URL o título? É uma questão bem óbvia né? Se é o título que é passado você terá que usar o próprio título para fazer a busca. Lembre-se que como disse no começo, você terá uma coluna no BD só para esse título formatado, e nessa coluna você fará a busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, pensei que tivesse como buscar pelo Id e utilizar o título na URL. Dessa forma ficará um pouco mais lento, já que selecionar uma query usando um inteiro é mais rápido do que uma string.

Esclarecido, obrigado e desculpa...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, além do título, passa o ID, como por exemplo nesse site:

 

http://www.tvcompra.com.br/marinheiropopeye/Pescaria-passeios-pratica-de-mergulho-em-Bertioga-id8

 

Ai nesse caso eu resgato o que está opós o ID e faço a busca... mas de qualquer sorte, você também pode colocar o campo que vai guardar o título como índice, o que vai te garantir velocidade, e a menos que você vá ter milhões de registros e acessos simultâneos a perda de tempo vai ser irrisória.

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.