Foros del Web » Programando para Internet » PHP »

problemas con url amigables especial

Estas en el tema de problemas con url amigables especial en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/12/2009, 19:09
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
problemas con url amigables especial

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
  1. /**
  2.  * crea url amigables
  3.  *
  4.  * @param string $url
  5.  */
  6. function amigables($url){
  7.     $valores=explode('&',$url);
  8.  
  9.     $ubicacion=explode('/',$_SERVER['PHP_SELF']);
  10.     $modulo=substr($valores[0],strpos($valores[0],'=')+1,strlen($valores[0]));
  11.     if($modulo!='seccion' && $modulo!='subseccion'){
  12.         $amigable=$modulo;
  13.     }
  14.     else{
  15.         $amigable='/';
  16.     }
  17.  
  18.     for($i=1;$i<count($valores);$i++){
  19.         $key=explode("=",$valores[$i]);
  20.         switch ($modulo){
  21.             case 'seccion':
  22.                 if($key[1]!='ver')
  23.                 $sql="select nombre from menu where id_menu='".$key[1]."' and visible='1'";
  24.                 break;
  25.             case  'subseccion':
  26.                 if($key[1]!='ver')
  27.                 $sql="select titulo from secciones where id_seccion='".$key[1]."' and visible='1'";
  28.                 break;
  29.             case 'noticias':
  30.                 if($key[1]!='ver'){
  31.                     $sql="select titulo  from noticias  where id_noticia='".$key[1]."'";
  32.                 }
  33.                 break;
  34.             case 'articulos':
  35.                 if($key[1]!='ver'){
  36.                     $sql="select titulo from articulos where id_articulo='".$key[1]."'";
  37.                 }
  38.                 //echo $sql."<br/>";
  39.                 break;
  40.         }
  41.         //hago la consulta sql     
  42.         if(!empty($sql)){
  43.             $result=mysql_query($sql);
  44.             $row=mysql_fetch_array($result);
  45.             if($key[1]!='ver' && $key[0]!='verPagina' && ($modulo!='seccion' && $modulo!='subseccion')){
  46.                 //echo "entro ";
  47.                 $amigable.="/".strtolower(validarNombreArchivo($row[0]));
  48.             }
  49.             elseif($key[0]=='verPagina'){
  50.                 //echo "casi entra ";
  51.                 $amigable.="/pagina/".$key[1];
  52.             }
  53.             else{
  54.                 //echo "no entro ";
  55.                 $amigable.=strtolower(validarNombreArchivo($row[0]));
  56.             }
  57.         }
  58.  
  59.         if($modulo=="cursos" || $modulo=="portfolio"){
  60.             if($key[0]=='verPagina'){
  61.                 $amigable.="/pagina/".$key[1];
  62.             }
  63.         }
  64.     }
  65.  
  66.     if($url!='index.php'){
  67.         if($ubicacion[2]=='admin'){
  68.             $amigable='/'.$ubicacion[1].'/'.$ubicacion[2].$amigable;
  69.         }
  70.         else{
  71.             $amigable=$amigable.".html";
  72.         }
  73.     }
  74.     else{
  75.         if($ubicacion[2]=='admin'){
  76.             $amigable=$_SERVER['HTTP_HOST'].'/'.$ubicacion[1].'/'.'admin';
  77.         }
  78.     }
  79.  
  80.     return $amigable;
  81. }
y este es mi .htacces
Código HTML:
Ver original
  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymLinks
  3. RewriteEngine On
  4.    
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7.  
  8. RewriteRule ^(.*)\.html$ index.php?modules=$1 [NC]
  9. RewriteRule ^(.*)/(.*)\.html$ index.php?modules=$1&id=&2 [NC]
  10. RewriteRule ^(.*)/(.*)\.html$ index.php?modules=$1&verPagina=&2 [NC]
  11. RewriteRule ^(.*)/(.*)/(.*)\.html$ index.php?modules=$1&opcion=&2&id=$3 [NC]
  12. </IfModule>
entonces si yo llamo a la funcion asi:
Código html:
Ver original
  1. <a href="<?php echo amigables('index.php?modules=seccion&id=1');?>">link</a>
  2. <a href="<?php echo amigables('index.php?modules=subseccion&id=2');?>">link</a>
  3. <a href="<?php echo amigables('index.php?modules=staff');?>">link</a>
  4. <a href="<?php echo amigables('index.php?modules=noticias&opcion=ver&id=4');?>">link</a>
  5. <a href="<?php echo amigables('index.php?modules=noticias&verPagina=2');?>">link</a>
  6. <a href="<?php echo amigables('index.php?modules=articulos&opcion=ver&id=1');?>">link</a>
  7. <a href="<?php echo amigables('index.php?modules=articulos&verPagina=2');?>">link</a>

me crea estos links html
Código HTML:
Ver original
  1. <a href="nombre_seccion.html">link</a>
  2. <a href="nombre_subseccion.html">link</a>
  3. <a href="staff.html">link</a>
  4. <a href="noticia/titulo_noticia.html">link</a>
  5. <a href="noticia/pagina/2.html">link</a>
  6. <a href="articulos/titulo_articulo.html">link</a>
  7. <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?
  #2 (permalink)  
Antiguo 25/12/2009, 14:21
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: problemas con url amigables especial

alguna idea de como hacerlo? es que no le encuentro la vuelta, busque en google pero todos los tutoriales que encontré son siempre de los mismo de este estilo
index.php?modules=noticias&opcion=ver&id=1
sitio.com/noticias/ver/1
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:12.