Pretty URL en PHP

Por motivos de posicionamiento en buscadores, nos puede interesar que los parámetros pasados por GET, formen parte de la URL.

Así, en vez de invocar a páginas del estilo index.php?parametro=valor podríamos tener index.php/parámetro/valor.

Por supuesto, esta operación la podemos realizar con el conocido mod_rewrite, o cualquiera de sus ports para Windows, aunque quizás pensemos que su configuración es demasiado tediosa, o bien sencillamente no nos sea posible instalar dicho módulo.

En el fondo, la información relativa a los parámetros, existe para PHP en la variable de servidor que contiene la URL, por lo que podríamos sencillamente, escribir una pequeña función, que transformase los parámetros, en parámetros normales de $_GET:

function URL2GetPairs()
{
$sUrl=utf8_decode(urldecode($_SERVER['URL']));

//En algunos casos URL contiene también el nombre de la página, así que si lo hay se lo quitamos.
$sUrl=@str_replace($_SERVER["PHP_SELF"], "", $sUrl);

//Eliminamos la primera barra si la hay, porque no es delimitador
if (substr($sUrl, 0, 1)=="/")
{
$sUrl=substr($sUrl, 1, strlen($sUrl)-1);
}

//Tratamos hasta encontrar el un ? o un &
$iPos=min(clsUtil::ToInt(strrpos($sUrl, "?")), clsUtil::ToInt(strrpos($sUrl, "?")));
if ($iPos>0)
{
$sUrl=substr($sUrl, 0, $iPos);
}

$asUrl=split('/', $sUrl);

//Exigimos un número de parámetros par
if ((count($asUrl)%2)==0)
{
for ($iCont=0; $iCont<count($asUrl); $iCont+=2)
{
$_GET[$asUrl[$iCont]]=$asUrl[$iCont+1];
}
}
}

Pretty URL en PHP

Deja un comentario