URL Clean

Agregar a favoritos

3 Comentarios

Posteado hace 877 días en:

Usar reglas de parseo en htaccess es una practica muy común, normalmente para embellecer nuestros enlaces, pero hay veces que no podemos hacer uso de ellas y tenemos que pasar los argumentos como se hace normalmente (por GET).

Existe una alternativa y lo usan muchos scripts, es el pasar los argumentos por la variable PATH_INFO, con estos obtenemos casi los mismos resultados, digo casi porque en todo momento tenemos que indicar el nombre del archivo.

Ejemplo:
//El de toda la vida
www.miweb.com/index.php?id=12
//Con htaccess
www.miweb.com/id/12
//La alternativa
www.miweb.com/index.php/id/12


function htaccess() {
global $htaccess;
if(!$htaccess) {
$htaccess = array();
$arguments = explode('/',@$_SERVER['PATH_INFO']);
array_shift($arguments);
$htaccess['args'] = $arguments;
$i = 0;
foreach($arguments as $argument) {
$htaccess['value'][$argument] = @$arguments[++$i];
}
}
if($args=func_get_args()) {
$get =  array ();
foreach($args as $arg) {
            if(is_numeric($arg)) {
            if(isset($_GET[$arg])) $get[$arg] = $_GET[$arg];
  else $get[$arg] = isset($htaccess['args'][$arg]) ? $htaccess['args'][$arg] : '' ;
            } else {
            if(isset($_GET[$arg])) $get[$arg] = $_GET[$arg];
 else $get[$arg] = isset($htaccess['value'][$arg]) ? $htaccess['value'][$arg] : '' ;
}
    }
    if(count($get) == 1) return join('',$get);
    else return $get;
} else {
return $htaccess['args'];
}
}
Con esta función podemos acceder fácilmente tanto por GET como con PATH_INFO, se encarga de parsear y devolver los resultados según los argumentos que le pasemos.

Ejemplos de uso:

Obtener el parametro id:
htaccess(‘id’); //12
Obtener el parametro numero 2
htaccess(2); //12
Obtener varios parametros
htaccess(0,’id’); //array(0=>‘id’,’id’=>12)

Funciona tanto para la url www.miweb.com/index.php?id=12 como para www.miweb.com/index.php/id/12


  • avatar

    David Martínez#1 hace 877 días

    Lo he hecho en algún caso que no disponía de .htaccess, pero prefiero la forma www.miweb.com/?/id/12

  • avatar

    IceBeat#2 hace 876 días

    Tambien es interesante tu propuesta, aunque creo que uno de los motivos porque se hicieron las url clean eran porque no se indexaban bien y el signo creo que tenia la culpa.

  • avatar

    Carlos#3 hace 215 días

    Gracias por el articulo, llevaba tiempo buscando algo parecido