
Rutas amigables sin Mod_Rewrite ni Htacces
Diciembre 15th, 2008Navegango 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:
-
// Get the URL relative to the script
-
$url = $_SERVER['PATH_INFO'];
-
-
// If for some reason $_SERVER["PATH_INFO"] does not work then
-
// you could use $_SERVER["REQUEST_URI"] or $_SERVER["PHP_SELF"]
-
-
// Remove the /index.php/ at the beginning
-
$url = preg_replace('/^(\/)/','',$url);
-
-
// Split URL into array
-
$url = explode('/',$url);
-
-
// Display array
-
print_r($url);
-
-
?>
Y OBTENDREMOS ALGO COMO:
HTML:
-
Array
-
(
-
[0] =>es,
-
[1] =>seccion,
-
[2] =>22
-
)
Vía | Evanbot.com






Enero 31st, 2011 at 18:07
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!
Febrero 1st, 2011 at 17:29
Sip siempre es una alternativa
Febrero 13th, 2011 at 21:55
pues esto solo es la mitad del camino... falta lo mas importante ¿A que nadie llegó a probar eso?
Febrero 13th, 2011 at 22:17
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