Hola,
estoy tratando de armar url amigables de links como estos:
http://localhost/websa100/index.php?...s=seccion&id=1 http://localhost/websa100/index.php?...ubseccion&id=2 http://localhost/websa100/index.php?modules=staff http://localhost/websa100/index.php?...pcion=ver&id=4 http://localhost/websa100/index.php?...as&verPagina=2 http://localhost/websa100/index.php?...pcion=ver&id=1 http://localhost/websa100/index.php?...os&verPagina=2
bien he armado un funcion php que me permite obtener el titulo y/o nombre de los id de cada link
Código PHP:
Ver original/**
* crea url amigables
*
* @param string $url
*/
function amigables($url){
$ubicacion=explode('/',$_SERVER['PHP_SELF']); if($modulo!='seccion' && $modulo!='subseccion'){
$amigable=$modulo;
}
else{
$amigable='/';
}
for($i=1;$i<count($valores);$i++){ switch ($modulo){
case 'seccion':
if($key[1]!='ver')
$sql="select nombre from menu where id_menu='".$key[1]."' and visible='1'";
break;
case 'subseccion':
if($key[1]!='ver')
$sql="select titulo from secciones where id_seccion='".$key[1]."' and visible='1'";
break;
case 'noticias':
if($key[1]!='ver'){
$sql="select titulo from noticias where id_noticia='".$key[1]."'";
}
break;
case 'articulos':
if($key[1]!='ver'){
$sql="select titulo from articulos where id_articulo='".$key[1]."'";
}
//echo $sql."<br/>";
break;
}
//hago la consulta sql
if($key[1]!='ver' && $key[0]!='verPagina' && ($modulo!='seccion' && $modulo!='subseccion')){
//echo "entro ";
$amigable.="/".strtolower(validarNombreArchivo
($row[0])); }
elseif($key[0]=='verPagina'){
//echo "casi entra ";
$amigable.="/pagina/".$key[1];
}
else{
//echo "no entro ";
$amigable.=strtolower(validarNombreArchivo
($row[0])); }
}
if($modulo=="cursos" || $modulo=="portfolio"){
if($key[0]=='verPagina'){
$amigable.="/pagina/".$key[1];
}
}
}
if($url!='index.php'){
if($ubicacion[2]=='admin'){
$amigable='/'.$ubicacion[1].'/'.$ubicacion[2].$amigable;
}
else{
$amigable=$amigable.".html";
}
}
else{
if($ubicacion[2]=='admin'){
$amigable=$_SERVER['HTTP_HOST'].'/'.$ubicacion[1].'/'.'admin';
}
}
return $amigable;
}
y este es mi .htacces
Código HTML:
Ver original<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ index.php?modules=$1 [NC]
RewriteRule ^(.*)/(.*)\.html$ index.php?modules=$1&id=&2 [NC]
RewriteRule ^(.*)/(.*)\.html$ index.php?modules=$1&verPagina=&2 [NC]
RewriteRule ^(.*)/(.*)/(.*)\.html$ index.php?modules=$1&opcion=&2&id=$3 [NC]
</IfModule>
entonces si yo llamo a la funcion asi:
Código html:
Ver original<a href="<?php echo amigables('index.php?modules=seccion&id=1');?>">link
</a> <a href="<?php echo amigables('index.php?modules=subseccion&id=2');?>">link
</a> <a href="<?php echo amigables('index.php?modules=staff');?>">link
</a> <a href="<?php echo amigables('index.php?modules=noticias&opcion=ver&id=4');?>">link
</a> <a href="<?php echo amigables('index.php?modules=noticias&verPagina=2');?>">link
</a> <a href="<?php echo amigables('index.php?modules=articulos&opcion=ver&id=1');?>">link
</a> <a href="<?php echo amigables('index.php?modules=articulos&verPagina=2');?>">link
</a>
me crea estos links html
Código HTML:
Ver original<a href="nombre_seccion.html">link
</a> <a href="nombre_subseccion.html">link
</a> <a href="staff.html">link
</a> <a href="noticia/titulo_noticia.html">link
</a> <a href="noticia/pagina/2.html">link
</a> <a href="articulos/titulo_articulo.html">link
</a> <a href="articulo/pagina/2.html">link
</a>
hasta ahí todo bien, salvo que a la única url que entra es a la que se forma con index.php=modules=staff así que mi duda es como se arma el .htacces para que me interprete las restante url amigables que armo?