Aprende a crear URLs amigables en Apache

11/12/2019 | Apache, PHP, SEO | 0 comentarios

Aprende a crear URLs amigables de forma sencilla utilizando expresiones regulares con el módulo mod_rewrite de Apache.

Descargar archivos Ver ejemplo


Para facilitar el posicionamiento de nuestras páginas en los buscadores se recomienda una estructura de URL sencilla, con palabras fáciles de leer y evitando números o parámetros poco entendibles. Este tipo de rutas son llamadas URLs amigables por que son fáciles de entender por los usuarios y los buscadores.

Ejemplo:

Al navegar entre categorías y sub-categorías de una tienda se pueden utilizar identificadores de la base de datos o utilizar keywords (palabras clave) como parámetros, pero la forma mas corta y sencilla es usar usar keywords estructurados como si fueran carpetas.

IDs:http://domain.com/products.php?category=3&subcategory=7
Keywords:http://domain.com/products.php?category=mens&subcategory=shoes
Amigable:http://domain.com/mens/shoes/

Como se observa la tercera forma es fácil de entender e incluso mas corta.

mod_rewrite

El módulo mod_rewrite del servidor web Apache es un motor que permite la creación de URLs amigable utilizando expresiones regulares para indentificar las rutas y luego definir que archivos internos los procesarán.

Para utilizar mod_rewrite es necesario crear un archivo llamado .htaccess y ubicarlo en la carpeta donde se encuentran nuestros archivos e incluir las reglas de acuerdo a nuestro proyecto.

Las directivas a utilizar para la creación de URLs amigables son:

  • RewriteEngine activa el módulo para la reescritura de URLs.
  • RewriteBase define la carpeta base donde se encuentran nuestros archivos.
  • RewriteRule describe las reglas para las rutas, tiene dos parámetros: el primero es la expresión regular para identificar a la ruta y la segunda es el archivo que ha de utilizarse en caso de coincidencia.

Creando las URLs Amigables

Entonces creamos un archivo .htaccess que contendrá el siguiente código:


RewriteEngine On
RewriteBase /

RewriteRule ^(.*)/(.*)/ products.php?category=$1&subcategory=$2 [L]
RewriteRule ^(.*)/ products.php?category=$1 [L]

Cómo se observa: la primera regla para detecta cuando hay dos niveles y la segunda cuando sólo hay un nivel, además notar que se utilizan las coincidencias ($1, $2) como parámetros en los archivos a utilizar.

Creando el archivo de ejemplo

Para completar el ejemplo, creamos un archivo PHP que obtenga e imprima los parámetros de las rutas creadas, con esto podemos comprobar que se están recibiendo los parámetros correctos.


<?php

$category = filter_input(INPUT_GET, 'category', FILTER_SANITIZE_STRING);
$subcategory = filter_input(INPUT_GET, 'subcategory', FILTER_SANITIZE_STRING);

echo '

Products

'; echo "Category: " . $category; echo '
'; echo "Subcategory: " . $subcategory;

Podemos comprobar que las siguientes rutas funcionan de la misma forma:

kodetop.com/demo/urls-amigables/products.php?category=mens&subcategory=shoes
kodetop.com/demo/urls-amigables/mens/shoes/

Referencias

Envíar Comentario

En este sitio los comentarios se publican previa aprobación del equipo de Kodetop. Evita los comentarios ofensivos, obscenos o publicitarios. Si deseas publicar código fuente puedes hacerlo entre las etiquedas <pre></pre>