Mod_rewrite es un poderoso módulo de Apache que proporciona capacidades de manipulación de URL. La característica sofisticada permite a los webmasters reescribir las URL y esta es una práctica común en muchos sistemas de administración de contenido como WordPress.

Mod_rewrite es conocido por traducir URL legibles por humanos en sitios web dinámicos. Esto hará que la URL se vea más limpia y amigable en los sitios web.

En esta guía, cubriremos los pasos para habilitar mod_rewrite en su servidor Apache que se ejecuta en un VPS de Ubuntu 18.04.

requisitos

  • Ubuntu 18.04 VPS
  • Un usuario no root con privilegios sudo
  • Servidor web Apache

Paso 1: activar Mod_rewrite

Puede activar cualquier módulo de Apache con el comando a2enmod. Entonces, ejecute el siguiente comando en su servidor Ubuntu 18.04:

$ sudo a2enmod rewrite

Si el módulo ya está activado en su servidor, recibirá un mensaje de advertencia.

Deberá reiniciar Apache cada vez que realice cambios en su configuración. Para hacer esto, ingrese el siguiente comando en una ventana de terminal:

$ sudo systemctl restart apache2

Su servidor ahora está listo para aceptar reglas de reescritura.

Paso 2: configura tu servidor para aceptar archivos .htaccess

Puede configurar reglas para reescribir URL directamente en el archivo de configuración de Apache. Sin embargo, es recomendable seguir las reglas. ‘.htaccess’ Presentar en cualquier sitio web. La mayoría de los sistemas de gestión de contenido se basan en eso ‘.htaccess’ Archivo y se crea de forma predeterminada cuando instala las aplicaciones.

De forma predeterminada, Apache no permite el uso de ‘.htaccess’ Por lo tanto, debe editar la configuración del archivo de hosts virtuales de cada sitio web agregando el siguiente código:

<Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
</Directory>

Por ejemplo, puede editar los hosts virtuales predeterminados que vienen con Apache con un editor nano ingresando el siguiente comando:

$ sudo nano /etc/apache2/sites-available/000-default.conf

Luego copie y pegue el texto de arriba justo antes del día de cierre. Recuerde guardar el archivo presionando CONTROL + X luego y Ingresar

Luego reinicie Apache para que los cambios surtan efecto:

$ sudo systemctl restart apache2

Paso 3: mod reescribe la sintaxis

La sintaxis básica de Apache mod_rewrite consta de las siguientes partes:

Reemplazo del patrón RewriteRule [flags]

  • RewriteRule: la directiva de nuestra regla.
  • Patrón: esta es una expresión regular (expresión regular) que coincide con lo que el usuario escribe en un navegador.
  • Sustitución: la ruta URL real a la que llamará el servidor Apache.
  • Bandera: parámetros opcionales que cambian el funcionamiento de las reglas.

Paso 4: crea un archivo .htaccess de muestra

Vamos a crear un patrón ahora. ‘.htaccess’ Archivo en el directorio raíz del sitio web predeterminado para probar mod_rewrite. Para hacer esto, ingrese el siguiente comando

$ sudo nano /var/www/html/.htaccess

Cada regla mod_rewrite debe estar con los comandos ‘RewriteEngine on’. Por lo tanto, debe ingresar esto en la parte superior del archivo.

RewriteEngine on

A continuación, reescribiremos una regla que redirige a los usuarios a un ‘contact_us.html’ Página en la que solicita la URL http: // ipaddress / contact_us

Entonces agreguemos la siguiente regla:

RewriteRule ^contact_us$ contact_us.html [NC]

En la regla anterior, ‘contact_us’ es el patrón que debe coincidir y pasar a nuestra ruta de sustitución ‘contact_us.html’. El comando ‘[NC]’es una bandera que le dice a Apache que ignore el caso de la regla. ‘^’ indica que estamos haciendo coincidir cualquier texto para la dirección IP pública o el nombre de dominio del servidor, mientras que ‘$’ indica el final de la URL coincidente.

Entonces nuestro completo ‘.htaccess’ un archivo debe verse como el siguiente texto:

RewriteEngine on

RewriteRule ^contact_us$ contact_us.html [NC]

Guarde el archivo presionando CONTROL+ X, , y Ingresar.

Luego, ingrese el siguiente comando para crear la página contact_us.html:

$ sudo nano /var/www/html/contact_us.html

Luego pegue el siguiente texto HTML en el archivo:

<html>
    <head>
        <title>Contact our website</title>
    </head>
    <body>
        <h2>This is a contact us page</h2>
    </body>
</html>

Guarde el archivo presionando CONTROL+ X, y Ingresar.
Si ahora llama a la ruta http: // ipaddress / contact_us en un navegador, Apache debería darle la página ‘contact_us.html ‘ que creamos como se muestra a continuación:

Conclusión

Las URL significativas son muy importantes tanto para los humanos como para los motores de búsqueda. De hecho, incluir palabras clave en las URL en lugar de números hace que su sitio web sea compatible con SEO. Hay docenas de reglas que puede escribir en su servidor web Apache, pero la guía anterior fue un tutorial simple para habilitar mod_rewrite en su computadora y asegurarse de que el módulo funcione como se esperaba.

Si antes no podía ejecutar un sistema de gestión de contenido como WordPress, debería funcionar ahora. Esperamos que haya disfrutado leyendo la guía y que aplique los pasos que ha aprendido en su VPS Ubuntu 18.04.