Redirecionamento Nginx para URL específico

Redirecionamento Nginx para URL específico

Para o bloco de servidor do nosso site no nginx, tenho estas diretivas de localização:

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

location /applications/

location /

location ~ \.php$

Tenho um URL específico do nosso antigo software de fórum que desejo redirecionar. A URL fica assim:

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

Até agora, nada que tentei parece corresponder a este URL. Eu tentei algumas instruções de reescrita diferentes no local / e também tentei uma correspondência exata pensando que a partida mais longa deveria vencer:

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

Isso não funciona - ainda recebo um 404 deste URL. Onde/como devo fazer esse redirecionamento?

Responder1

Uma abordagem é usar:

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

Esta abordagem corresponderá ao /forums/forumdisplay.phpURL onde o fargumento de consulta está definido como 105 e pode haver argumentos de consulta adicionais.

O exemplo no comentário requer uma correspondência exata com o URL completo e não funciona se o URL for

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

informação relacionada