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 :
/**
* crea url amigables
*
* @param string $url
*/
function amigables($url){
$valores=explode('&',$url);
$ubicacion=explode('/',$_SERVER['PHP_SELF']);
$modulo=substr($valores[0],strpos($valores[0],'=')+1,strlen($valores[0]));
if($modulo!='seccion' && $modulo!='subseccion'){
$amigable=$modulo;
}
else{
$amigable='/';
}
for($i=1;$i<count($valores);$i++){
$key=explode("=",$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(!empty($sql)){
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
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 :
<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 :
<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 :
<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? es decir evitando el nombre de la variable get que le paso y solo mostrar el valor de esa variable
__________________
