BtnOpen

Navegango por EvanBot.com he encontrado un código que realmente puede ser muy útil cuando necesitamos crear rutas amigables y no tenemos la posibilidad de Tener un Servidor Linux, con Apache y el Mod_Rewrite activado y Htacces.

La idea es que de una URL tipo: http://www.tudominio.com/index.php?idioma=es&seccion=miseccion&id=22

Nos quede algo como: http://www.tudominio.com/index.php/es/miseccion/22

HTML:
  1. // Get the URL relative to the script
  2. $url = $_SERVER['PATH_INFO'];
  3.  
  4. // If for some reason $_SERVER["PATH_INFO"] does not work then
  5. // you could use $_SERVER["REQUEST_URI"] or $_SERVER["PHP_SELF"]
  6.  
  7. // Remove the /index.php/ at the beginning
  8. $url = preg_replace('/^(\/)/','',$url);
  9.  
  10. // Split URL into array
  11. $url = explode('/',$url);
  12.  
  13. // Display array
  14. print_r($url);
  15.  
  16. ?>

Y OBTENDREMOS ALGO COMO:

HTML:
  1. Array
  2. (
  3. [0] =>es,
  4. [1] =>seccion,
  5. [2] =>22
  6. )

Vía | Evanbot.com


4 Responses to “Rutas amigables sin Mod_Rewrite ni Htacces”

  1. DaronWolff Says:

    Muchas gracias por la función ha sido de mucha utilidad ya que no tienes que modificar el httpaccess. Esto es de utilidad si no tienes el control del apache, por ejemplo si tienes rentado un host!
    Gracias!

  2. acadio Says:

    Sip siempre es una alternativa :)

  3. pitger Says:

    pues esto solo es la mitad del camino... falta lo mas importante ¿A que nadie llegó a probar eso?

  4. pitger Says:

    En fin, yo lo estoy intentando tanto con asp como con php (sin usar .htaccess ni mod rewrite)... pero en síntesis este es el GRAN PROBLEMA:

    EN ASP
    Lo ideal es que cuando una persona, o un robot accede a www.miurl.com/articulo/111 te muestre el contenido de www.miurl.com/articulo.asp?articulo=111 (por ejemplo) y todo ello mostrándote en la barra de dirección el primer url... bueno pues el problema está en que cuando, a través del archivo que gestiona las url no encontradas (error 404 y que en mi caso es rewrite.asp), cuando intentas obtener la url (en este caso www.miurl.com/articulo/111) no te devuelve lo que quieres, sino el archivo "www.miurl.com/rewrite.asp". Este es el gran problema ya que si no tienes la url donde van las variables, es imposible hacer un server.transfer, server.execute, o include si me apuras.

    EN PHP
    Dado que mi servidor, aunque es windows, ejecuta archivos php, puse el archivo rewrite.php como gestor del error 404 y si, lo del problema del ASP se hace en PHP con $variable = urldecode($_SERVER['REQUEST_URI']); que te devuelve www.miurl.com/articulo/111. Goooooooooooooooooool!!!!!!!............. pues no q'asio palo!
    Sucede que en péachepé no hay un server.transfer o server.execute, los cuales cargan las url de destino manteniendo www.miurl.com/articulo/111 en la barra de navegación... que va, el php te hace un redirect puro y duro así que ahí estamos atascaos.

    Vamos, que lo que hay en este articulo es la parte facil de la programación. Encontrar la solución para que funcione y poner un ejemplo incluso no lo he encontrado en ningun sitio y ya me he visto mas de 190 paginas diferentes que hablan del tema (sin contar con las otras 4000000 que te hablan del .htaccess y del modrewrite.)

    POSIBLE SOLUCIÓN PARA ASP
    Para quien lo intente, le doy lo que creo que es una pista y por donde estoy buscando yo la respuesta. Segun he leido asp no recoge la url que da fallo (www.miurl.com/articulo/111) pero asp.net si tiene un método para rescatar ese valor.... despues seguir con todo segun iba (cabe decir que segun leí poner codigo asp y asp.net en un mismo archivo es viable). Yo estoy buscando la respuesta por ahí.. si alguien lo consigue... joer que lo comparta!.

    POSIBLE SOLUCIÓN PARA PHP
    Pegarse un tiro... No he encontrado ningun metodo que transfiera de un archivo a otro manteniendo la url insertada si no es, eso si, tocando el htaccess por lo que habrá que coger al toro por los cuernos en este caso. Por lo que he leido, el .htaccess, si tu servidor lo tiene y si te lo permite, lo puedes crear (si no lo hay), o editar.

    Hala... yo ya dejé mi aportación

Deja un comentario


Add to Technorati Favorites BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog