Cómo configurar mod_rewrite

mod_rewrite de Apache es una forma efectiva y fácil de manipular URLs. La manipulación de una URL se realiza desde el lado del servidor. Explicado de forma básica, con mod_rewrite, las URLs limpias y fáciles de usar se convierten en sitios web.

Como su nombre lo indica, este módulo realiza una reescritura de las URLs. Puede ser una excelente opción para limpiar las URLs de tu sitio web.

En este tutorial, te explicamos qué es mod_rewrite, por qué es útil y cómo configurarlo en un VPS que ejecute Apache.

¿Cómo funciona Apache mod_rewrite?

Cada vez que un usuario ingresa una URL, se compara con una lista de reglas predefinidas. Las reglas están presentes para buscar patrones o palabras clave particulares. Si esa palabra clave está presente en la URL y la regla coincide, se reemplaza con una cadena predefinida: una nueva URL.

¿Qué hace que mod_rewrite sea útil?

La mayor ventaja que ofrece mod_rewrite es su capacidad para convertir las URLs comunes en URLs limpias, haciéndolas fácil de entender por el usuario final, que podría no ser un experto en tecnología.

A su vez, estas URL también son muy fáciles de usar y de buscar. ¡Los motores de búsqueda reconocen estas URL más rápido! ¿Qué es una URL limpia? Echemos un vistazo a este ejemplo:

  1. URL1: http://ejemplodemodrewrite.com/cliente.php?id=A786#234QA
  2. URL2: http://ejemplodemodrewrite.com/cliente/=A786#234QA/
  3. URL3: http://ejemplodemodrewrite.com/cliente/Martha/

De las tres URL anteriores, está claro que la tercera es mucho más legible y comprensible para el usuario final que la primera y la segunda. La URL 3 es una URL limpia.

¿Cómo configurar mod_rewrite en un VPS de Linux?

Recuerda, antes de comenzar, ¡necesitas acceder a tu VPS usando SSH! Consulta nuestro tutorial PuTTY si tienes inconvenientes con esto. Ahora comencemos el proceso:

1. Instala Apache

Usaremos Ubuntu 22.04 para este ejemplo. Esta versión de Ubuntu tiene un instalador de paquetes incorporado: apt-get. Primero, actualízalo ejecutando el comando:

sudo apt-get update

Ahora puedes proceder con la instalación de apache2.

El comando para la instalación es:

sudo apt-get install apache2

2. Habilita mod_rewrite

El siguiente paso es activar mod_rewrite.

El comando para hacerlo es:

sudo a2enmod rewrite

El comando anterior habilitará el modo de reescribir o te informará si ya está en uso. Después de esto, reinicia Apache:

sudo service apache2 restart

3. Crea el archivo .htaccess

Las reglas de reescritura de URL deben estar predefinidas. Aquí, .htaccess empieza a aparecer. Un usuario puede escribir todas las reglas en el archivo .htaccess. Este es usado por el servidor. No debería haber ningún error en este archivo, de lo contrario, devolverá un error del servidor. Podemos modificar nuestras reglas de reescritura en cualquier momento.

El archivo .htacess debe crearse en la raíz para probar la funcionalidad de reescritura.

Primero ejecuta el siguiente comando:

sudo nano /var/www/html/.htaccess

Esto creará el archivo .htaccess si aún no está en la raíz, o lo abrirá si ya existe. Por ahora puedes guardar y salir. En nano, puedes hacerlo presionando CTRL+O para guardar y CTRL+X para salir.

Continuando con los preparativos para usar mod_rewrite, debes abrir el archivo 000-default.conf ubicado en el /etc/apache2/sites-enabled/. Esto puedes hacerlo con el comando:

sudo nano /etc/apache2/sites-enabled/000-default.conf

Dentro de este archivo, coloca el siguiente bloque de código después de la cadena de caracteres <VirtualHost *:80>:

<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
allow from all
</Directory>

Guarda el archivo como lo hiciste con .htaccess. Para que los cambios anteriores tengan efecto, reinicia Apache como se mencionó en el paso dos.

4. Reescribe una URL

Como mencionábamos antes, mod_rewrite lo que hace, básicamente, es seleccionar la URL limpia y convertirla en rutas reales que conducen al código. Para esto debes tener:

  • Una regla de reescritura predefinida
  • Un patrón: el patrón proporcionado actuará como una referencia coincidente con la URL ingresada por el usuario
  • Reescribiendo líneas: llamará a la ruta que el servidor debería llamar en ese momento

Ahora, pasemos a escribir una regla de reescritura que redirigirá a un usuario a la página quienes_somos.html, si la URL solicitada es http://ip/quienessomos

Para ejecutar con éxito la regla de reescritura, el motor de reescritura debe estar encendido. Ingresa el siguiente comando al comienzo del archivo .htaccess.

RewriteEngine on

Y la siguiente línea puede ser tu regla:

ReWriteRule ^quienessomos$ quienes_somos.html [NC]

La sintaxis puede ser un poco confusa, vamos a desglosarla:

  • En la regla anterior, quienessomos es el patrón, que cuando sea encontrado y coincida será redirigido a quienes_somos.html
  • NC es una bandera que hace que la regla no sea sensible a mayúsculas y minúsculas.
  • ^ Representa que el texto inmediatamente después de la dirección IP debe coincidir con la dirección proporcionada como patrón.

Las dos líneas combinadas se verían así en el archivo .htaccess:

ReWriteEngine on
ReWriteRule ^quienessomos$ quienes_somos.html [NC]

¡Y listo!, ¡eso es todo! ¡Creaste con éxito una regla mod_rewrite!

Conclusión

Las URL sencillas, limpias y simples de usar juegan un papel vital para cualquier sitio web exitoso. Tener palabras clave es muy importante, no solo para que las URLs se puedan memorizar con facilidad, sino también para el SEO. Hay cientos de reglas que puedes crear y escribir. ¡Y ahora ya sabes cómo! ¡Esperamos que utilices mod_rewrite en tus proyectos!

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.