Ir ao conteúdo
  • Cadastre-se

URL amigável e problemas de formatação


Posts recomendados

E aí gurizada, beleza?  É o seguinte: estou tendo problemas com minhas url amigáveis quando, através do get, há uma query. Explico:

Quando eu acesso a página noticias.php, a mesma faz uma query caso exista a variável q, havendo esta variável, ela faz todo um while para pegar os dados e printar na página. Até aí tudo normal, sem maiores problemas.

Os links para a página estão assim

noticias.php?q=$id&url=$url

 

A query é essa

<?php
if(isset($_GET['q']) && $_GET['q'] != "") {
	$noticia = $_GET['q'];

	$sql = "SELECT * FROM noticias WHERE id_noticia = '$noticia'";
	$query = mysqli_query($mysqli, $sql);

	while ($res = mysqli_fetch_array($query)) {
		$id = $res['id_noticia'];
		$titulo = $res['titulo'];
		$url = $res['url'];
		$data = date_create($res['data']);
		$data = date_format($data, 'd/m/Y');
		$anunciante = $res['anunciante'];
		$fonte = $res['fonte'];
		$descricao = $res['descricao'];
		$foto = $res['foto'];

		echo 
		"
		<img src='img/$foto' alt='' title='$titulo'>
		<h1>$titulo</h1>
		$descricao
		<span>Fonte: <a href='$fonte' target='_blank'>$fonte</a></span>
		";
	}
}  
?>

Tudo funciona perfeitamente até eu mexer no .htaccess, deixando assim

RewriteRule ^noticias/([0-9]+)/([0-9a-zA-Z]+) noticias.php?q=$id&url=$url

Deixo os links como

noticias/$i/$url

E a partir disso acontece toda a M. Simplesmente a página fica toda desconfigurada. Como resolver?

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Felipe Paz Olá, não sou expert em htaccess.... mas acho que a sintaxe tá um pouco errada. Você precisa usar variáveis no lugar das variáveis do php

 

exemplo:

RewriteRule ^noticias/([a-z0-9-]+)/([0-9]+)/?$ /noticias.php?q=$2&url=$1 [NC]

O $2  e o $1 são os seus parâmetros. A flag [NC] serve para ignorar case sentitive.

 

Fonte: http://blog.thiagobelem.net/aprendendo-urls-amigaveis-com-regras-complexas

Link para o comentário
Compartilhar em outros sites

@DiF mesmo que eu pegue apenas pelo número do id evitando, assim, caracteres fora do padrão, a página continua totalmente desconfigurada. Esses dias eu estava testando o funcionamento de uma url amigável, e quando criava uma variável e atribuía o $_GET a ela não funcionava. Eu tinha que, na parte onde mostraria o dado pêgo pela url, eu tive que inserir o $_GET diretamente. Exemplo

$teste = $_GET['teste'];

echo "O teste é $teste"; (Isto não funcionava)

Agora se eu colocasse echo "O teste é ".$_GET['teste'];, aí sim funcionava. Pegando direto do banco de dados não tinha testado ainda mas não deveria ocorrer nenhum erro.

 

 

Editado

Estava testando aqui e o que causa a bagunça na formatação é que quando eu mudo no htaccess o caminho caminho.php?q=$id para caminho/$id, os níveis de acesso dos diretórios mudam. Esse mesmo caminho mencionado, ficaria um nível abaixo do arquivo css, porém, se eu mudar o nível de acesso para este caminho, as páginas como index (index.php), noticias (noticias.php), é perdem a formatação já que não foi encontrado o diretório de estilização e todos os demais. Eu utilizo um header.php em cada página para buscar os menus e o footer.php, deixando apenas o conteúdo próprio em cada respectiva página, e mesmo assim, os páginas principais e estão no mesmo nível que o header e o footer. =[

 

Editado

Na verdade, o por quê eu ainda não sei, mas ele altera os diretórios dos arquivos. Tive que criar novos diretórios para as páginas principais, porém, quando faço a pesquisa pela url, ele não encontra a página. No htaccess está assim

RewriteRule ^noticia/$id pages/noticias.php?q=$1

E o link está assim

<a href='noticia/$id'>

 

Link para o comentário
Compartilhar em outros sites

Reabrindo o post para não criar outro tópico. Na alteração do htaccess, eu não consigo fazer as alterações estando tudo no mesmo nível. Um exemplo:

Citação

meusite

     css

     index.php

     contato.php

     login.php

     htaccess

Eu preciso criar da seguinte maneira

Citação

meusite

     css

     novodiretorio

          index.php

          login.php

          contato.php

     .htaccess

Só que aí a pesquisas com url do tipo login.php? ... não funcionam quando alterado o htaccess. Alguém sabe resolver?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...