URL’s amigables con .htaccess

14 01 2008

Una de las características más importantes de htaccess es la posibilidad de permitir crear URL’s amigables para los motores de búsqueda. Una de las características de los lenguajes de scripting para el Web es que permiten automatizar funciones para la publicación de contenido en el sitio. Este procedimiento se hace muchas veces a través del paso de parámetros, generalmente por el método GET. Pues bien, asumiendo que esta introducción ya ha sido bastante comentada en otros artículos veamos los pasos para crear URL’s amigables con htaccess:

Paso 0: lo defino como paso 0 por que es una precondición que podemos tomar en cuenta a la hora de trabajar con la manipulación de URL’s. En este paso, lo que se propone es establecer que las condiciones de reestructuración afectarán solo a determinados tipos de archivos.

# Siempre iniciamos con estas intrucciones
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

Para continuar, es importante recordar que para el uso de estas características es fundamental que el servidor este compilado con el módulo MOD_REWRITE.

Paso 1: antes de iniciar la reescritura de URL es necesario que usted sepa utilizar Expresiones Regulares. Las Expresiones Regulares nos ayudan a no tener que escribir cada regla por cada archivo que queremos «reescribir». Un buen sitio donde aprender a utilizar Expresiones Regulares es: RegularExpressions.info. También, prepararé en el futuro un tutorial sobre Expresiones Regulares.

Pues bien, con estos dos puntos abarcados, podemos iniciar este tutorial de Reescritura de URL’s. En este primer ejemplo se condiciona que toda petición que tenga como dominio ‘domain.com’ entre a las reglas de reescritura. Dentro de la directiva RewriteRule, se indica que toda petición al dominio sea rediccionado a ‘domain2.com’. La partícula [R=301,L] indica literalmente: Redirección Permanente (Status 301), Última Regla para denotar que las que siguen, indican otras condicionantes.

# Sitio movido a otro sitio permanentemente
# domain.com a domain2.com
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(\.)$ http://www.domain2.com/$1 [R=301,L]

El siguiente ejemplo nos muestra una regla mas sencilla. En esta solamente, indicamos que el archivo ‘domain.com/page.htm’ direcciona a ‘domain.com/new_page.htm’. Las RewriteCond FLAGS indican rediccionamiento, que se tome sin Case-sensitive y que esta es la última regla.

RewriteRule ^page$ new_page.htm [R,NC,L]

Podemos crear varias lineas de condiciones, cuando usamos las variables de servidor, como en el primer ejemplo. Generalmente, usaremos la partícula [L] por cada línea para denotar única regla.

Los siguientes dos ejemplos son más complejos y denotan la reescritura de parámetros a estructuras de directorios. En el primer caso seria algo como: cualquier nombre sea el valor del atributo name para ‘categories.php’. El segundo es similar, solamente que incluye una segunda variable. En este se indica que todo aquello que sea para el directorio ‘/articles/’ y que tenga dos niveles será interpretado como ‘titulo’ y ‘pagina’.

# domain.com/category-name-1/ a
# domain.com/categories.php?name=categorie-name-1
RewriteRule ^([A-Za-Z0-9-]+)/?$ categories.php?name=$1 [L]

# domain.com/articles/title/5 a

# domain.com/articles.php?name=title&page=5
RewriteRule ^articles/([A-Za-Z0-9-]+)/([0-9]+)/?$ articles.php?name=$1&page=$2 [L]

Los ejemplos han sido algo básicos pero principalmente se han debido a que no he deseado extender tanto el artículo. Pero como agregado les puedo decir que lo principal sería contar con una copia de: ModRewrite Cheatsheet, disponible desde el sitio de I Love Jack Daniels.

Artículos Relacionados