Práctica: URLs amigables con Apache en profesordeinformatica.com

Práctica: URLs amigables con Apache

Por Aitor López de Aberasturi el Lunes, 04 de Noviembre de 2013 0 Comentarios

Cuando utilizamos utilizamos lenguajes de programación en el servidor y pasámos parámetros las URLs que generamos se dice que no son amigables. Es decir, que son difíciles de recordar y hacen que pierdan peso en la indexación de Google.

Ejemplo de url no amigable:

www.dominio.com/buscar.php?palabra=deporte

Ejemplo de url amigable:

www.dominio.com/buscar/deporte

Expresiones regulares:

^ Comienzo de la expresión
$ Final de la expresión
(valor1|valor2) valor 1 o valor 2
. Encuentra cualquier cosa
* ninguno o varios
+ uno o varios
() variables que van a ser utilizadas posteriormente
(.*) cualquier contenido
(.+) Cualquier contenido que tenga al menos una palabra

Terminaciones:

[L] Última regla
[R] Indica redirección
[NC] Para indicar que no se distinganentre mayúsculas y minúsculas

Ejemplos:

Rewriterule ^palabra/(.*)$  buscar.php?palabra=$1

Con dos parámetros. Si queremos paginar podemos pasar un segundo parámetro que nos indique el número de la página:

RewriteRule ^palabra/(.*)/(.*)$    buscar.php?palabra=$1&num=$2 [L]

Práctica: URLs amigables con Apache

La idea es que en lugar de utilizar ulr's no amigables como http://localhost/buscar.php?palabra=deporte utilicemos url's amigables como http://localhost/palabra/deporte.1.- Activamos el módulo mod_rewrite

a2enmod rewrite

Después editamos el fichero que tengamos en /etc/apache2/sites-available/default, sustituyendo
Options Indexes FollowSymLinks MultiViews
AllowOverride None
por
Options Indexes FollowSymLinks
MultiViews AllowOverride All

Instalamos php5

apt-get install php5-common libapache2-mod-php5

Creamos el programa /var/www/buscar.php

Es un programa que pasa como parámetro palabra con el método GET.

<form method="get" action="buscar.php">  <input name="palabra" value="<?php echo $_GET[palabra]; ?>">  <input type="submit" value="buscar" />  </form>

2.- Editamos el fichero /var/www/.htaccess

Options +FollowSymLinks  RewriteEngine on  RewriteRule ^palabra/(.*)$    buscar.php?palabra=$1 [L] RewriteRule ^aaa.html$   bbb.html [L]

Nota: Si en lugar de a ^palabra/(.*)$ ponemos ^buscar/(.*)$ no nos funciona.

3.- Realizamos la prueba en el navegador y vemos que las siguientes urls nos dan el mismo resultado:

http://localhost/buscar.php?palabra=deporte   	http://localhost/palabra/deporte

Ejemplo

El contenido del .haccess profesor de informatica.com

# le decimos dode esta la base  RewriteEngine on  Options +FollowSymlinks  Options +SymlinksIfOwnerMatch  # le decimos dode esta la base  RewriteBase /   RewriteCond %{REQUEST_FILENAME} !-d  RewriteCond %{REQUEST_FILENAME} !-f  ############################### html  RewriteRule ^autor$ index.php?seccion=autor&url=autor [L]  RewriteRule ^html/resultado/(.*)$ resultado.php?num=$1 [L]  RewriteRule ^html/pruebalo/(.*)$ pruebalo.php?num=$1 [L]  RewriteRule ^html/etiqueta/(.*)$ etiqueta.php?etiqueta=$1 [L]   RewriteRule ^html$ index.php?seccion=html&url=introduccion [L]  RewriteRule ^html/$ index.php?seccion=html&url=introduccion [L]  RewriteRule ^html/(.*)$ index.php?seccion=html&url=$1 [L]   RewriteRule ^css$ index.php?seccion=css&url=introduccion [L]  RewriteRule ^css/$ index.php?seccion=css&url=introduccion [L]  RewriteRule ^css/(.*)$ index.php?seccion=css&url=$1 [L]   RewriteRule ^html5$ index.php?seccion=html5&url=introduccion [L]  RewriteRule ^html5/$ index.php?seccion=html5&url=introduccion [L]  RewriteRule ^html5/(.*)$ index.php?seccion=html5&url=$1 [L]

Próxima entrada

Práctica: Redirecciones 301 con apache


Sobre el profe

Esta es la página web de Aitor Lopez de Aberasturi profesor de informática en ITS Ciudad Jardin. También puedes visitar mi blog de clase.