Vamos a ver como realizar unas URLs amigables para que se indexen correctamente en los buscadores. Es una técnica SEO que consiste en colocar algún texto dentro de la URL para que la ruta sea más entendible para el usuario y por lo tanto para los buscadores.
Imaginemos que escribimos un post en nuestro blog y la URL que genera es:
http://www.calavi.net/entresijos/index.php?id=78
Esta URL no aporta ninguna información, simplemente nos daría a un post con una información, pero si en lugar de esa parrafada nos muestra:
http://www.calavi.net/entresijos/articulo/78/como-subir-multiples-ficheros.html
Ahora mucho mejor, sabemos que el link nos lleva a un post que habla sobre como subir múltiples archivos y ademas fácilmente indexable por Google ya que le damos un valor extra a la URL.
Para empezar, vereis que la estructura que hago servir es la siguiente:
http://www.calavi.net/entresijos/index.php?id=1 => pasa a => http://www.calavi.net/articulo//id/titulo (y siempre usaremos esta URL)
En la raiz del blog tengo un archivo llamado
index.php al que le paso los parámetros del artículo, y este archivo pasa a llamarse
articulo, del id solo se mantiene el nº y se muestra el
título del artículo.
Para que la URL amigable sea interpretada como
index.php?id=78 y que esta pueda ser utilizada para hacer las llamadas a la base de datos y montar el blog, necesitamos modificar el .htaccess con las siguientes lineas:
RewriteEngine on
RewriteRule ^articulo/(.+)/(.+) index.php?id=$1&titol=$2
De esta manera el Apache puede reconocer la url y transformala de forma entendible y poder trabajar con las variables que pasamos por referencia.
Pero ahora nos falta transformar el título, ya que si ponemos acentos y espacios, el navegador no lo interpreta muy bien y empieza a coloar sigos como el %20 en lugar de un espacio, para arreglar esto usaremos una pequeña función en PHP que transforma un texto a URL amigable:
function urls_amigas($url)
{
$url = strtolower($url); //pasamos a minúsculas
$find = array(´á´, ´é´, ´í´, ´ó´, ´ú´, ´ñ´,´à´, ´è´, ´ò´, ´ç´); //indicamos los acentos
$repl = array(´a´, ´e´, ´i´, ´o´, ´u´, ´n´,´a´, ´e´, ´o´, ´c´); //su equivalente sin acento
$url = str_replace ($find, $repl, $url); //reemplaza
$find = array(´ ´, ´&´, ´ ´, ´ ´, ´+´); //indicamos los espacios y saltos de linea
$url = str_replace ($find, ´-´, $url); //los sustituimos por un -
$find = array(´/[^a-z0-9-<>]/´, ´/[-]+/´, ´/<[^>]*>/´); //carácteres no interpretados en la URL
$repl = array(´´, ´-´, ´´); //pondremos un -
$url = preg_replace ($find, $repl, $url); //reemplazamos
return $url; //retornamos la URL adaptada
} |
La llama a la función se puede realizar de la siguiente manera:
<a href="<?php echo "articulo/" . $valoresquery["id"] . "/" . $valoresquery["titulo"] . ".html";
?>">Como subir múltiples archivos</a>
Esta función también puede tener su equivalente a ASP, pero lo que pasa es que no lo domino mucho :P