Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2011, 20:30
eresvey
 
Fecha de Ingreso: febrero-2011
Ubicación: cali, valle del cauca
Mensajes: 158
Antigüedad: 13 años, 2 meses
Puntos: 8
Pregunta duda con una url amigable

Hola!

Estoy trabajando una aplicacion en php y necesito ayuda con las urls amigables ya que no dan el resultado que necesito esto e slo que tengo
Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. #4 variables
  4. Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7&$8=$9
  5. #3 variables
  6. Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7
  7. #2 variables
  8. Rewriterule ^(.*)-(.*)_(.*)-(.*)_(.*)$ $1.php?$2=$3&$4=$5
  9. #1 variable
  10. Rewriterule ^(.*)/(.*),(.*)/-$ $1.php?$2=$3


en el .htaccess y esto en el php
Código PHP:
Ver original
  1. <?php
  2. /***
  3. Archivo descargado de http://willy.tiperu.com/
  4. ***/
  5. //Iniciamos o continuamos la sesión encargada de evitar el bucle infinito
  6. session_name("url_amigable");
  7. //Almacenamos datos del server, script y variables (pasadas por GET)
  8. $Server=$_SERVER['SERVER_NAME'];
  9. $Script=$_SERVER['PHP_SELF'];
  10. $Variables=$_SERVER['QUERY_STRING'];
  11.  
  12. //Verificando si tiene variables por GET
  13. //y no se han pasado datos mediante un form por POST
  14. //ya q al redireccionar un  post puede ocasionar errores.
  15. //Tambien verificamos que la variable de sesión 'Listo'
  16. //sea diferente a 1, esto nos eviara un bucle infinito.
  17.  
  18. if(!empty($Variables) && $_SERVER['REQUEST_METHOD']=='GET' && $_SESSION['Listo']!=1){
  19.     //Si tiene variables pasadas por GET se procede a hacer el cambio.
  20.     //1. Agrupando $Variables por "variable=valor" en el array $Variable.
  21.     $Variable=explode("&",$Variables);
  22.     //2. Sustituyendo "=" por "," y concadenandolo en variable $Amigable.
  23.     for($i=0;$i<count($Variable);$i++){
  24.         $Amigable.="-".str_replace("=","_",$Variable[$i]);
  25.     }
  26.     //3. Quitando la extension ".php" a $Script para simular un directorio.
  27.     $Dir=str_replace(".php","",$Script);
  28.     //4. Generando la URL Amigable.
  29.     $URL_AMIGABLE="http://".$Server.$Dir.$Amigable."/";
  30.     //5. Colocando la variable de sesión 'Listo' a 1 para evitar el bucle infinito
  31.     // al redireccionar la web.
  32.     $_SESSION['Listo']=1;
  33.     //6. Redireccionando a la url amigable
  34.     header("Location: $URL_AMIGABLE");
  35.     //7. Exit hará que culmine hasta este punto el script, si no estuviera 'exit'
  36.     // el script continuaría ejecutándose y llegaría hasta el final del mismo, es decir,
  37.     // a la parte donde colocamos a la variable de sesión 'Listo' en cero, originandose
  38.     // entonces un bucle infinito.
  39.     exit;
  40. }
  41. //Cambie $_URL_BASE por la ruta raiz de su web, ya que al simular la url amigable
  42. //directorios, hará que no muestre adecuadamente los origenes de los recursos que
  43. //llama su página web.
  44. $_URL_BASE="http://".$Server."/zl/1030.php";
  45. ?>


y de esta url:

http://localhost/z/1030.php?cod=3&usuario=1


me da esta:

http://localhost/z/1030-cod_3-usuario_1/

y lo que sucede es que necesito que me muestre ademas de eso el nombre del producto:

http://localhost/z/1030-cod_3-usuari...-portatil.html

eso es todo, por que mando el nombre del anuncio y me sale solamente:

http://localhost/z/1030-cod_3-usuario_1/vendo.html

Y no se ya como hacerlo, este es el unico codigo que me a generado el resultado que quiero asi que quisiera trabajar sobre el muchas gracias