Sistemas

Rewrite: eliminar la ID de los artículos de WordPress y crear una redirección permanente en Nginx

Wikired, se inicio con la construcción de sus URL basada en el ID del artículo más el slug o parte amigable de la dirección. Bueno, tome la decisión de ir hacia atrás y eliminar  la ID de la URL. Como ya había indexadas algunas páginas y algunos enlaces entrantes, necesitaba crear una rule de re-escritura (rewrite) para Nginx, sencilla y eficaz.

Escenario

Las urls ya indexadas que necesitaba reescribir era del tipo:

/85-titulo-del-post
/96-titulo-de-otro-post
/ID-slug

Y necesitaba convertirlas a

/titulo-del-post
/titulo-de-otro-post
/slug

Estaba claro que no había ninguna que pudiera tener duplicada el mismo slug, por lo que se trataba de eliminar el ID numérico de la url.
Para ello que mejor que usar una buena regla regex.

location ~ /([0-9]+)-(.+) {
   return 301 https://$server_name/$2;
}

Básico en reescritura de direcciones para Nginx

Nginx usa expresiones regulares con la sintaxis de Perl para las reescrituras, y esto suele asustar a más de uno.

Tambien existen tres directivas implicadas que funcionan de forma distinta: return, rewrite y try_files.

Las dos primeras son las usadas para la reescritura en general, y try_files,es la que se usa para dirigir las solicitudes a los servidores de aplicaciones como PHP.

Directiva return

Es la más simple y la más recomendada,  en lugar de la rescritura, siempre que sea posible. Incluye la devolución en un server o un contexto de ubicación que especifica las URL que se deben volver a escribir y define la URL corregida (reescrita) que el cliente utilizará en futuras solicitudes del recurso.

server {  
    listen 80;  
    listen 443 ssl;  
    server_name www.nombre-antiguo.es;  
    return 301 $scheme://www.nombre-nuevo.es$request_uri;  
}

Algunos blog de gurús indican que para este caso usan un rewrite que no esta recomendado por la gente de Nginx.

# NOT RECOMMENDED  rewrite ^ $scheme://www.new-name.com$request_uri permanent;

 

Directiva rewrite

Si necesitamos probar distinciones más complicadas entre URL, capturar elementos de la URL original, cambiar o agregar elementos de la ruta, podemos utilizar la directiva rewrite

Al igual que la directiva de devolución (return) es aconsejable aplicarla en un contexto de servidor (server) o de ubicación (locate). Su sintaxis es muy sencilla, siendo el regex, el contenido que Nginx rescribirá, sólo si coincide con la expresión regular (además de coincidir con la directiva server o ubicación)

rewrite regex URL [ flag ];

Hay otra diferencia, y es que esta directiva sólo puede devolver el código 301 ó 302. Para devolver otros debemos incluir una directiva de devolución después de la directiva de reescritura.

Por último, la directiva rewrite no finaliza el procesamiento de Nginx de la petición como la directiva return, y no envía necesariamente una redirección al cliente. A menos que especifiquemos lo que queremos que haga Nginx, buscará otras opciones del módulo de  reescritura (break, if, return, rewrite). Esta opción de persé, es bastante mas complicada y requiere mas trabajo, aunque su potencia es increíble.

Recomendaciones


Imagen de portada Designed by Freepik y retocada por Abdelkarim Mateos

 

Comparte este artículo

Artículo Antiguo
Este artículo tiene más de 2 años. Es muy probable que su contenido este anticuado, aunque pueda ser de utilidad, es conveniente que revises otras informaciones al respecto. Si lo encuentras útil o crees que puede ser actualizado, deja tu comentario con la actualización para poder editarlo y que pueda ser útil a los demás.

Comparte este articulo en

Abkrim

Yo solo se que no se nada, y que me paso la vida aprendiendo

Entradas recientes

Youtube – Mod Security en DirectAdmin. Conocerlo y gestionarlo en el panel de control DirectAdmin.

¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…

3 meses hace

Apertura del canal Youtube, Tecno Boomer, dedicado al mundo del hosting

Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…

3 meses hace

El Uso de la Lista UCEPROTECT en los Niveles 2 y 3: Una Falacia de Causa Cuestionable

La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…

5 meses hace

Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

No es la primera vez que me encuentro con el agotamiento de la memoria en…

11 meses hace

Problemas de Acceso con Centos 7, Almalinux 8, Ubuntu 20.04, y Debian 10/11: Un Enigma Firewall CSF

Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…

1 año hace

MySQL no inicia debido a errores en la base de datos interna de MySQL

Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…

1 año hace