Ir para conteúdo

Arquivado

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

daviassumpcao

URL amigável PHP Htaccsess - Mais fácil de entender

Recommended Posts

Estou com problemas para fazer uma URL amigável e fiz um post mas ele está me confundindo pois o site está em uma área de testes e resolvi fazer outro com o mesmo exemplo porém, este está online já e se clicarem no link poderão ver como está... preciso entregar um trabalho para o cliente que utiliza o mesmo modelo de trabalho.

O tratamento das URL no htaccess não está em uma index que manda para uma outra pasta, está tudo na raiz da hospedagem....

Preciso que esse link: www.odontocentermg.com.br/especialidade.php?recordID=1
Fique assim: www.odontocentermg.com.br/especialidade/implante-dentario
O link para a página está assim: <a href="especialidade.php?recordID=<?php echo $row_rsEspecMenuTop['id_area']; ?>"</a>

Esse é o htaccess:
RewriteEngine On

RewriteBase /
ErrorDocument 404 /404.php
RewriteRule ^/?$ /index.php [NC,L]
RewriteRule ^institucional/?$ /institucional.php [NC,L]
RewriteRule ^contato/?$ /contato.php [NC,L]
RewriteRule ^confirmacao/?$ /confirmacao.php [NC,L]
RewriteRule ^duvidas/?$ /duvidas.php [NC,L]

RewriteRule ^especialidade/?$ /especialidade.php [NC,L]



Esse é o script que puxa o resultado no banco de dados:
<?php require_once('Connections/conex.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$colname_DetailRS1 = "-1";
if (isset($_GET['recordID'])) {
$colname_DetailRS1 = $_GET['recordID'];
}
mysql_select_db($database_conex, $conex);
$query_DetailRS1 = sprintf("SELECT * FROM area WHERE id_area = %s", GetSQLValueString($colname_DetailRS1, "int"));
$DetailRS1 = mysql_query($query_DetailRS1, $conex) or die(mysql_error());
$row_DetailRS1 = mysql_fetch_assoc($DetailRS1);
$totalRows_DetailRS1 = mysql_num_rows($DetailRS1);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc acabou de perguntar no meu blog ne?!

 

Troque:

: <a href="especialidade.php?recordID=<?php echo $row_rsEspecMenuTop['id_area']; ?>"</a>
por

<a href="especialidade/<?php echo slug($row_rsEspecMenuTop['nome_area']); ?>"</a>
Lembrando que vc vai ter q escrever uma função que pegue o nome e transforme em slug (retirando acentos e colocando hífen no lugar de espaços).

 

E depois fazer a tua query ler o argumento que o htaccess vai enviar(string), e fazer um novo select.

RewriteRule ^especialidade\/([a-z-]+)$ /especialidade.php?recordSlug=$1 [NC,L]
Entendeu o caminho ?

 

 

(Dica: não use o DreamWeaver)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá William... fui eu mesmo. Já estou a 2 dias tentando resolver isso. O lance do Dreamweaver tá complicado, estou em um processo de mudança, estou estudando para me livrar dele de vez por causa dessas dificuldades.

 

Entendi o caminho sim. Isso seria o exemplo para função Slug? Onde a coloco, no arquivo que faço a consulta ou na página que estou exibindo o resultado. Perdoe-me pelo excesso de perguntas, é que estou iniciando em programação livre do DW. Obrigado pela força.

 

function slug( $string ) {
if (is_string($string)) {
$string = strtolower(trim(utf8_decode($string)));

$before = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿRr';
$after = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
$string = strtr($string, utf8_decode($before), $after);

$replace = array(
'/[^a-z0-9.-]/' => '-',
'/-+/' => '-',
'/\-{2,}/' => ''
);
$string = preg_replace(array_keys($replace), array_values($replace), $string);
}
return $string;
}

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.