Anda di halaman 1dari 4

INICIO IR A LA WEB CONTACTO Buscar...

Crear urls amigables con .htaccess y PHP


Categorías
PUBLICADO EL 17 - 07 - 13 18 COMENTARIOS

Muchos se preguntarán, ¿qué son las urls amigables y para qué sirven?, ¿realmente son AJAX
necesarias?. CSS
Diseño web
Pongamos un ejemplo práctico para ver la importancia que tienen las urls amigables dentro de un
desarrollo web. Fotografía
GIT
Si os fijais en un perfil de usuario de la popular red social Twitter, podéis ver que si mi usuario es
HTML
“sombeo_oficial“, puedo acceder rápidamente a mi perfil desde la dirección
“https://twitter.com/sombeo_oficial“. Eso amigos, es una url amigable, algo rápido y sencillo Java
para acceder a un contenido de la página (en este caso al perfil del usuario) tanto para una Javascript & jQuery
persona como para un buscador. Otros

Anteriormente, cuando surgió Facebook y se empezó a utilizar, los perfiles de los usuarios no PHP
disponían de urls amigables, por lo que para acceder a un perfil de usuario debíamos hacerlo a Recursos de diseño
través de una url como esta “http://www.facebook.com/profile.php?id=1304880680“, algo que SQL
como podéis ver no es nada sencillo de recordar para una persona, ni tampoco muestra
Trabajos
información muy concreta para un buscador.

Actualmente Facebook ya utiliza urls amigables y podemos ver que para acceder a un perfil de
usuario ya símplemente con poner su nombre de usuario accedemos a él, sería algo así Etiquetas
“http://www.facebook.com/sombeo” tanto para perfiles, como páginas, eventos, etc.
ajax archivo archivos bd botón cargar clase class
Para el posicionamiento de un sitio web es muy importante tener las direcciones o urls de forma
amigable para los buscadores. Lo que incrementará considerablemente nuestro tráfico por parte de css css3 database descargar direcciones diseño
éstos. Ya que los buscadores además de fijarse en el título de la página, descripción, etcétera, efecto etiquetas fechas gratis html icono iconos
también se fijan en la url y no es lo mismo tener una url amigable que diga imagen imagenes javascript
“http://www.miweb.com/productos/monitor-17-pulgadas-samsung” a que sea jquery linux mostrar mysql paginacion
“http://www.miweb.com/producto.php?id=2154“.
php script scroll servidor sistema sql subir
Después de esta explicación, empecemos: tablas teclado tooltip tooltips ubuntu usuario video web
windows
Primero necesitamos limpiar éstas direcciones de carácteres inválidos como las tíldes, eñes y
demás carácteres especiales. Para ello podemos utilizar la siguiente función PHP:
1 function urls_amigables($url) {
2
3 // Tranformamos todo a minusculas
4
5 $url = strtolower($url);
6
7 //Rememplazamos caracteres especiales latinos
8
9 $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
10
11 $repl = array('a', 'e', 'i', 'o', 'u', 'n');
12
13 $url = str_replace ($find, $repl, $url);
14
15 // Añadimos los guiones
16
17 $find = array(' ', '&', '\r\n', '\n', '+');
18 $url = str_replace ($find, '-', $url);
19
20 // Eliminamos y Reemplazamos otros carácteres especiales
21
22 $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
23
24 $repl = array('', '-', '');
25
26 $url = preg_replace ($find, $repl, $url);
27
28 return $url;
29
30 }

Esta función la usaremos a la hora de crear los enlaces en nuestra página web, para evitar
posibles problemas.

Ahora vamos con lo importante, deberemos crear un archivo de texto plano .htaccess en el
directorio raíz con una estructura específica, para que nuestro servidor Apache sepa como
interpretarlo.

La primera línea de este archivo debe ser la siguiente:

1 RewriteEngine on

Después ponemos las dos siguientes líneas:

1 RewriteCond %{SCRIPT_FILENAME} !-d


2 RewriteCond %{SCRIPT_FILENAME} !-f

Estas dos líneas son muy importantes, lo que hacen es decirle a Apache que sólo puede crear
direcciones amigables si el directorio especificado no existe. Esto evita por ejemplo las reglas que
coincidan con “http://miweb.com/imagenes/logo.png“. La primera línea evita los directorios (!-d) y
la segunda línea los archivos (!-f).

Ahora vamos a reescribir una dirección para hacerla amigable.

Tenemos la siguiente dirección:

1 index.php?seccion=php&articulo=3

Podemos hacerla amigable y quedaría así:

1 articulo/php/3/urls-amigables-con-htaccess-y-php

Pues para poder crear está dirección amigable, a continuación de la última línea que tenga el
archivo .htaccess deberemos poner una regla, en el caso de la dirección anterior sería ésta:

1 Rewriterule ^articulo/(.+)/([0-9]+)/(.+)$ index.php?seccion=$1&articulo=$2

Expliquemos un poco que significa cada cosa:

Rewriterule significa que vamos a crear una regla para reescribir una dirección.
El carácter ^ significa el comienzo de la expresión.
El primer valor (.+) significa que ahí va el primer valor/variable que pasamos por la url con
el método GET. A estas variables se las llaman $1, $2, $3, dependiendo de su posición.
El valor ([0-9]) indica que ahí puede ir cualquier número del 0 al 9 pudiéndose repetir todas
las veces que sean necesarias.
El segundo valor (.+) hace lo mismo que el primero pero con la última posición de la
dirección.
El carácter $ significa que ahí termina la expresión.

Podemos hacer un infinidad de reglas distintas con diferentes patrones utilizando expresiones
regulares.

Entonces cuando en el código de mi página web vaya a crear un enlace lo haría poniendo la url
amigable directamente. Antes de todo ésto, cuando hagamos por ejemplo la consulta a la base de
datos, mostraremos alguno de estos datos en la url para crear nuestra url amigable.

La consulta sería algo así:

1 SELECT id, titulo, descripcion, seccion FROM productos WHERE id = 3

Después de hacer la consulta desde PHP y devolver los valores quedaría algo así:

1 //recibo los valores de la consulta en diferentes variables


2 $seccion = $row['seccion'];
3 $id_articulo = $row['id'];
4
5 //limpiamos el título con la función que hay al comienzo del artículo
6 $titulo = urls_amigables($row['titulo']);
7
8 echo '<a href="articulo/'.$seccion.'/'.$id_articulo.'/'.$titulo.'" title="'.$row["titulo"].'"></a>';

Esto crearía nuestra url amigable utilizando los valores que tenemos en nuestra base de datos.

Para evitar problemas con la raíz al utilizar las urls amigables con direcciones relativas, es
recomendable utilizar el siguiente código dentro del “<head>” de nuestra página:

1 <base href="http://www.miweb.com/" />

Y listo, con todo esto ya tendríamos nuestras urls amigables funcionando correctamente. Ya saben,
cualquier duda tan sólo pregunten.

Sobre Reacción Estudio


Somos un estudio informático formado por jóvenes centrados en el desarrollo
web, el diseño gráfico y la fotografía. Puedes solicitar presupuesto para tu
proyecto a través de nuestra página web o por teléfono, pero en este blog
hablaremos de todo lo que engloba el desarrollo web a día de hoy.

Más información en Reacción Estudio


Copyright
Este sitio web utiliza cookies para que usted©tenga
2018 Blog Reacción
la mejor Estudio – Desarrollo
experiencia de usuario.web
Siycontinúa
mucho más - ¡Tu zona de
navegando aprendizaje!.
está dando su consentimiento para la aceptación
Diseño y desarrollo por Reaccionestudio | Alojamiento web en Womp
de las mencionadas cookies y la aceptación de nuestra política de cookies. ACEPTAR

Anda mungkin juga menyukai