Cómo crear reglas de reescritura en Nginx

Las reglas de reescritura de NGINX proporcionan una forma poderosa de modificar y administrar solicitudes de URL en su servidor web. Estas reglas son esenciales para redirigir URL, cambiar estructuras de URL y mejorar el SEO. Al aprovechar las reglas de reescritura, puede asegurarse de que los usuarios y los motores de búsqueda puedan acceder a su contenido de manera eficiente y mantener una estructura de URL limpia y organizada. Dominar las reglas de reescritura le permite mejorar la funcionalidad y flexibilidad de su servidor web, brindando una mejor experiencia de usuario general.

Esta guía explicará cómo crear reglas de reescritura en NGINX, brindando ejemplos y pasos claros para ayudarlo a configurar su servidor para manejar las modificaciones de URL de manera efectiva.

Reglas de reescritura de NGINX: directiva de devolución

El NGINX return La directiva es una poderosa herramienta para gestionar las respuestas del servidor. Se utiliza principalmente para redirigir a los clientes a diferentes URL o para enviar códigos de estado específicos. Esta directiva simplifica la redirección del tráfico, especialmente al mover o reestructurar su sitio web. Es esencial para el SEO y para mantener la experiencia del usuario durante las transiciones. Examinemos un ejemplo único para comprender su aplicación:

Ejemplo: supongamos que desea redirigir a los usuarios de una página antigua a una nueva. En su archivo de configuración de NGINX, puede usar el return directiva de la siguiente manera:

server {
    listen 80;
    server_name oldsite.com;
    return 301 http://newsite.com$request_uri;
}

En este ejemplo, cualquier solicitud a oldsite.com se redirige permanentemente a newsite.com, conservando el URI de solicitud. El código de estado 301 indica una redirección permanente, informando a los motores de búsqueda que actualicen su indexación.

Reglas de reescritura de NGINX: directiva de reescritura

La directiva de reescritura NGINX se utiliza para modificar los URI de solicitud de varias maneras antes de su posterior procesamiento. Es más versátil que la directiva return y permite manipulaciones complejas de URL basadas en condiciones. Esta característica es crucial para crear URL compatibles con SEO y administrar enlaces heredados.

Ejemplo: imagina que necesitas convertir una URL dinámica en una de apariencia estática para un mejor SEO. Podrías usar la directiva de reescritura de esta manera:

server {
    listen 80;
    server_name example.com;
    location /products {
        rewrite ^/products/([0-9]+)/([0-9]+)$ /product?id=$1&page=$2 last;
    }
}

En este escenario, una URL como ejemplo.com/products/123/2 se reescribe internamente en ejemplo.com/product?id=123&page=2. El último indicador indica que el proceso de reescritura debe detenerse y se debe reevaluar el nuevo URI.

Ejemplo de reglas de reescritura de NGINX

Implementación de reglas de reescritura HTTPS en NGINX

Garantizar conexiones seguras a través de HTTPS es crucial para la seguridad de los datos. La directiva de reescritura NGINX puede redirigir todo el tráfico HTTP a HTTPS, mejorando la seguridad de los datos en tránsito.

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

En este ejemplo, las solicitudes HTTP a ejemplo.com se redirigen a HTTPS, lo que garantiza una comunicación cifrada.

Optimización de URL: eliminación de barras diagonales duplicadas en las reglas de reescritura de NGINX

En ocasiones, las URL pueden contener barras diagonales duplicadas, lo que genera confusión o errores. La directiva de reescritura de NGINX maneja esto de manera eficiente al convertir las URL con barras dobles en una sola barra.

server {
    server_name example.com;
    if ($request_uri ~* "\/\/") {
        rewrite ^/(.*)/$ /$1 permanent;
    }
}

Esta regla simplifica las URL eliminando las barras diagonales redundantes.

Redirección de directorio: reglas de reescritura de NGINX en acción

Al reorganizar o mover recursos, a menudo es necesario redirigir directorios completos de manera eficiente. NGINX facilita esto mediante su regla de reescritura.

location ^~ /old-directory/ {
    rewrite ^/old-directory/(.*)$ /new-directory/$1 permanent;
}

Este comando redirige todas las solicitudes de /directorio-antiguo/ a /directorio-nuevo/.

Manipulación de cadenas de consulta mediante reglas de reescritura en NGINX

Modificar las URL en función de cadenas de consulta puede resultar especialmente beneficioso durante el rediseño del sitio. Las reglas de reescritura de NGINX permiten la reestructuración dinámica de URL basada en estos parámetros.

if ($args ~ "^id=(.*)&lang=(.*)") {
    set $id $1;
    set $lang $2;
    rewrite ^/page.php$ /page/$lang/$id? permanent;
}

Aquí, la regla de reescritura transforma cadenas de consulta complejas en URL más optimizadas.

Garantizar URL uniformes: barra diagonal en las reglas de reescritura de NGINX

La uniformidad en la estructura de la URL, como la barra diagonal final, puede ser fundamental para la coherencia del sitio y el SEO.

rewrite ^([^.]*[^/])$ $1/ permanent;

Esta regla garantiza que todas las URL terminen con una barra, manteniendo un formato estandarizado.

Redirección basada en métodos: empleo de reglas de reescritura en NGINX

NGINX permite redirecciones basadas en métodos de solicitud específicos, como POST, que puede ser crucial para manejar de forma segura los envíos de formularios.

if ($request_method = POST ) {
    return 301 https://example.com$request_uri;
}

Este comando redirige todas las solicitudes POST a una URL HTTPS.

Protección de imágenes con reglas de reescritura de NGINX

Proteja los recursos de su servidor evitando enlaces directos no autorizados a sus imágenes.

location ~ .(gif|png|jpe?g)$ {
    valid_referers none blocked ~.google. ~.bing. ~.yahoo. example.com *.example.com;
    if ($invalid_referer) {
        rewrite ^/images/(.*)$ /stop-hotlinking.$1 last;
    }
}

Esta configuración redirige las solicitudes con referencias no válidas, bloqueando efectivamente los enlaces directos.

Hacer cumplir las URL en minúsculas para lograr coherencia

Mantener las URL en minúsculas en todo su sitio mejora la coherencia y evita la confusión.

location ~ [A-Z] {
    rewrite ^(.*)$ $scheme://$host$1 lowercase;
}

Este comando convierte cualquier elemento de URL en mayúsculas a minúsculas.

Manejo de cambios en la estructura de la URL

Adaptarse a nuevas estructuras de URL sin perder tráfico ni dañar la experiencia del usuario es crucial durante las actualizaciones del sitio web.

server {
    listen 80;
    server_name example.com;
    
    location ~* ^/oldpath/(.*) {
        rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;
    }
}

Redirige a los usuarios y motores de búsqueda de URL antiguas a nuevas.

Creación de URL limpias para plataformas CMS

Para las plataformas CMS que dependen de cadenas de consulta, las reglas de reescritura de NGINX pueden crear URL más limpias y compatibles con SEO.

location / {
    try_files $uri $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(/[^.]*[^/])$ $1.php last;
}

Esta configuración transforma las URL a un formato más legible, lo que potencialmente mejora el rendimiento de SEO.

Conclusión

Al crear y configurar reglas de reescritura en NGINX, puede optimizar la gestión de URL, mejorar el SEO y garantizar una experiencia de usuario perfecta. Revise y pruebe periódicamente sus reglas de reescritura para asegurarse de que funcionen como se espera y realice los ajustes necesarios. Dominar las reglas de reescritura de NGINX le permite aprovechar todo el poder de NGINX para obtener un servidor web más dinámico y con mayor capacidad de respuesta.

Joshua James
Sígueme
Últimas entradas de Joshua James (ver todo)

Deja un comentario