Interesantes entrada en la que vamos a ver cómo crear urls amigables con htaccess y PHP. De esta manera las urls de nuestra web se indexarán mejor y tendremos un mayor posicionamiento SEO.
Otra manera de aumentar el posicionamiento es disminuyendo el tiempo de carga de nuestra web, os recomiendo leer este post:
El funcionamiento de nuestro script para realizar urls amigables se va a comportar de la siguiente manera:
En este primer ejemplo vamos a crear un sencillo script en el que solamente vamos a sustituir los caracteres especiales y espacios en blanco de nuestra URL amigable:
function limpiar_acentos_caracteres($s) { $s = preg_replace("/[äáàâãª]/","a",$s); $s = preg_replace("/[ÄÁÀÂÃ]/","A",$s); $s = preg_replace("/[ÏÍÌÎ]/","I",$s); $s = preg_replace("/[ïíìî]/","i",$s); $s = preg_replace("/[ëéèê]/","e",$s); $s = preg_replace("/[ËÉÈÊ]/","E",$s); $s = preg_replace("/[öóòôõº]/","o",$s); $s = preg_replace("/[ÖÓÒÔÕ]/","O",$s); $s = preg_replace("/[üúùû]/","u",$s); $s = preg_replace("/[ÜÚÙÛ]/","U",$s); $s = preg_replace("/[çÇ]/","c",$s); $s = preg_replace("/[ñÑ]/","n",$s); $s = ereg_replace("[()¿?!¡/_´'&,:-=+#.;%@]","",$s); $s = str_replace('"',"",$s); $s = str_replace('[',"",$s); $s = str_replace(']',"",$s); $s = str_replace("\\","",$s); $s = strtolower(str_replace(" ","-", $s)); return $s; } $url = limpiar_acentos_caracteres("El suelo está mojado en este precioso día de sol con pingüinos") . "-ID.html"; //el resultado sería algo así //el-suelo-esta-mojado-en-este-precioso-dia-de-sol-con-pinguinos.html //Para crear mejor la url lo ideal sería que tuviese el id de la entrada en la tabla de la BBDD, por ejemplo: //el-suelo-esta-mojado-en-este-precioso-dia-de-sol-con-pinguinos-555.html
Os explico el código superior:
Si veis el código comentado, os he añadido un tipo de url con el id de la entrada, esto hará más fácil resolver la consulta a la BBDD para mostrar el contenido.
Ya solo nos queda configurar el archivo htaccess:
RewriteEngine On RewriteBase / RewriteRule ^(.*)-([0-9]{1,8}).html$ /ruta-de-mi-php.php?id=$2
Con estas líneas lo que detectamos es:
Vamos a mejorar el ejemplo anterior dándole un toque más profesional, al final hemos creado una URL muy sencilla, limitándonos a sustituir caracteres.
En este ejemplo vamos condicionar las palabras de la URL, es decir, ninguna palabra menor de 4 caracteres aparecerá en la URL amigable y así evitar largas URLs:
function limpiar_acentos_caracteres($s) { $s = preg_replace("/[äáàâãª]/","a",$s); $s = preg_replace("/[ÄÁÀÂÃ]/","A",$s); $s = preg_replace("/[ÏÍÌÎ]/","I",$s); $s = preg_replace("/[ïíìî]/","i",$s); $s = preg_replace("/[ëéèê]/","e",$s); $s = preg_replace("/[ËÉÈÊ]/","E",$s); $s = preg_replace("/[öóòôõº]/","o",$s); $s = preg_replace("/[ÖÓÒÔÕ]/","O",$s); $s = preg_replace("/[üúùû]/","u",$s); $s = preg_replace("/[ÜÚÙÛ]/","U",$s); $s = preg_replace("/[çÇ]/","c",$s); $s = preg_replace("/[ñÑ]/","n",$s); $s = preg_replace("[()¿?!¡/_´'&,:-=+#.;%@]","",$s); $s = str_replace('"',"",$s); $s = str_replace('[',"",$s); $s = str_replace(']',"",$s); $s = str_replace("\\","",$s); //condición para que las palabras de 3 o menos caracteres no aparezcan en la url y las sustituimos por espacios $s = preg_replace('/\b.{1,3}\b/', ' ', $s); //eliminanos los espacios de la anterior sustitución $s = preg_replace('/\s\s+/', '-', $s); //eliminamos los espacios al principio y final $s = trim($s); $s = strtolower(str_replace(" ","-", $s)); return $s; } $url = limpiar_acentos_caracteres("El suelo está mojado en este precioso día de sol con pingüinos") . "-ID.html";
En la función he metido 3 líneas adicionales para obtener la funcionalidad de limitar las palabras de la url a 4 caracteres como mínimo, os las explico:
El fichero htaccess es idéntico al anterior.