AddThis Social Bookmark Button
AddThis Feed Button
Bio
Mi avatar Blog de un pequeño informaticú y sus ocurrencias y pequeñas notas de ayuda.
Citas
Loading Quotes...
100_9939
100_9938
100_9937
100_9936
100_9935
Categorias
links
27
Mar

Urls bonitas con HTACCESS y PHP (en Apache)

(QR Code)

Normalmente cuando pasamos variables a una pagina lo hacemos del modo “index.php?cat=restaurante” lo cual ademas de no quedar muy bonito si aumentamos mucho en numero de variables podemos tener el problema de que google no indexe correctamente algunas paginas.

Para ellos podemos definir en un fichero htaccess que todas las rutas pasadas a nuestra URL se pasen a un archivo, por ejemplo para convertir “http://wwww.midominio.com/index.php?cat=restaurante” en “http://www.midominio.com/cat/restaurante”.

El código en cuestión:



RewriteEngine On
RewriteBase /milbodas/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /milbodas/index.php [L]



Aquí obtenemos la parte de la URL que nos interesa. Destacar que WEBROOT es una constate que define la parte de la ruta que no es significativa para nosotros, ej: “http://www.midominio.com/”


$ruri = substr($_SERVER['REQUEST_URI'], strlen(WEBROOT));
if(substr($ruri, -1) == '/'){$ruri=substr($ruri, 0, -1);}
$urlparse =explode( '/', $ruri);
$vars=convertArrayKeys($urlparse);




Con esto extraemos la parte de la URL que nos interesa en la cadena $urlparse

La función convertArrayKeys es un metodo propio par convertir esa cadena en un Array clave=>valor para facilitar el uso de las variables.


function convertArrayKeys($arrayOrigen){
$arrayRemplazo = Array;
$icount =count($arrayOrigen);
if ($icount>1){
if (($icount%2)==0){ // elementos pares
for ($i=0;$i<$icount;$i+=2){
$arrayRemplazo[$arrayOrigen[$i]]=$arrayOrigen[$i+1];
}
}else{ // elementos impares
for ($i=0;$i<($icount-1);$i+=2){
$arrayRemplazo[$arrayOrigen[$i]]=$arrayOrigen[$i+1];
}
}
}
return $arrayRemplazo;
}




Esa función nos devolverá la cadena ej. "cat/restaurante/pagina/1" en el formato ej: Array("cat"=>"restaurante","pagina"=>"1");

y con esto solo queda usar nuestra variable $vars obtenida como si de la variable global $_GET se tratara, con la salvedad de que no es una superglobal (hay que declararla "global" en los métodos para poder tener acceso a ella)


Nadie ha comentado (aun...)

No hay comentarios

Quieres dejar un comentario?