URL amigável
Bom dia galera!
Você já quis ter um endereço de uma página assim: www.seusite.com.br/nome-da-pagina em vez de www.seusite.com.br/pagina?id=235 ?
Então, isso é esteticamente bom, e o google adora isso. Vamos supor que você tem um dominio, e o seu site está dentro da pasta site: www.seudominio.com.br/site.
Com isso em mente, vamos supor que tem uma página de notícias, que busca tudo por id via $_GET[];
www.seudominio.com.br/site/noticias.php?id=1
Nesse PHP “noticias.php”, você insere o seguinte código:
$adress = $_SERVER['REQUEST_URI'];
$adress = explode("/", $adress);
$adress = $adress[count($adress)-1];
$pega_id = “SELECT id,post_name FROM wp_posts WHERE post_name = ‘$adress’”;
$select_id = mysql_query($pega_id) or die (mysql_error());
if($select_id) {
while($a = mysql_fetch_array($select_id)) {
$id_selecionado = $a['id'];
}
}
Como podem ver, eu dou um explode da url, e pego o último conteúdo antes da última barra (acho que é isso rsrs).
Aqui estou usando exemplo do wordpress mesmo. onde post_name é a url amigável. Eu faço uma consulta no banco, e pego somente a linha que tiver esse nome da url.
Aí eu pego a id dele. Depois é só eu substituir a $_GET['id'] que estava vindo da url (www.seudominio.com.br/site/noticias.php?id=1) e faço a consulta substituindo o mesmo por $a['id'].
Feito isso, toda vez que você chamar a url ele vai realizar essa consulta, e converter o nome, para id.
Mas só isso não resolve, porque os servidores identificam a url amigável como pasta. O que vai verificar isso será o HTACCESS.
# BEGIN htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /site/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /site/noticias.php [L]
</IfModule>
# END htaccess
Isso vai verificar se nao existe nenhuma pasta com o nome que você passou na URL. se existir, ele entra. Senão, ele vai pro noticias.php, onde vai ser feito aquele tratamento.
Vamos lá, quebrem a cabeça, testem, veja se funciona.
Um abraço.
Comentários