Te explico, cuando ingresas un nuevo articulo en la base de datos, en la base deberás tener las columnas correspondientes... id titulo copete cuerpo_articulo url_amigable etc.
La columna url_amigable no es otra cosa que el titulo pasado por una funcion que haga que el titulo "Esto es una url amigable" se transforme en "esto-es-una-url-amigable".
Yo utilizo esta:
Código PHP:
Ver originalpublic function amigar($url) {
$a = array("á","é","í","ó","ú","ñ","Á","É","Í","Ó","Ú","Ñ"); $b = array("a","e","i","o","u","n","A","É","Í","Ó","U","Ñ");
// everything to lower and no spaces begin or end
//replace accent characters, depends your language is needed
//$url=replace_accents($url);
// decode html maybe needed if there's html I normally don't use this
//$urli = html_entity_decode($url,ENT_QUOTES,'UTF8');
// adding - for spaces and union characters
$find = array(' ', '&', '\r\n', '\n', '+',',');
//delete and replace rest of special chars
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/'); $repl = array('', '-', '');
//return the friendly url
return $url;
}
De esta forma podes formar las urls de la siguiente forma:
http://www.miweb.com/editorial/71/es...a-url-amigable
en este caso cuando llamas un articulo a la DB, lo podes llamar por el id o por los dos id y url amigable:
o
www.miweb.com/editorial/esto-es-una-url-amigable
(en este segundo caso buscas en la base por el titulo solo, asi que no podes tener dos titulos iguales)
De manera que cuando clickeas en un link, en la pagina que te mostrara el articulo, tenes:
Código PHP:
Ver original$id=$_GET['idart'];
$amigable=$_GET['urlamigable'];
...
y haces la llamada
"select * from ".$this->tabla." where id='$id' and url_amigable='$amigable' ";
Aca te muestro el renglon del .htaccess que hace que la url se convierta en amigable
Código PHP:
Ver originalRewriteRule ^editorial/([0-9]+)/(.+)?$ index.php?modulo=editorial&idart=$1&urlamigable=$2 [NC,L]
Saludos.