Redirección de Nginx para URL específica

Redirección de Nginx para URL específica

Para el bloque del servidor de nuestro sitio en nginx, tengo estas directivas de ubicación:

location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$

location /applications/

location /

location ~ \.php$

Tengo una URL específica de nuestro antiguo software de foro que quiero redirigir. La URL se ve así:

https://www.example.com/forums/forumdisplay.php?f=105

Hasta ahora, nada de lo que he probado parece coincidir con esta URL. Probé algunas declaraciones de reescritura diferentes en la ubicación / y también probé una coincidencia exacta pensando que la coincidencia más larga debería ganar:

location = /forums/forumdisplay.php?f=105 {
    return 301 https://newurl;
}

Esto no funciona; sigo recibiendo un 404 de esta URL. ¿Dónde/cómo debo hacer esta redirección?

Respuesta1

Un enfoque es utilizar:

location = /forums/forumdisplay.php {
    if ($arg_f = 105) {
        return 301 https://newurl;
    }
    fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}

Este enfoque coincidirá con la /forums/forumdisplay.phpURL donde el fargumento de consulta está establecido en 105 y puede haber argumentos de consulta adicionales.

El ejemplo del comentario requiere una coincidencia exacta con la URL completa y no funciona si la URL es

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567

información relacionada