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.php
URL onde o f
argumento 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