Como redirecionar scripts PHP antigos na configuração do NGINX para um novo site HTTPS?

Como redirecionar scripts PHP antigos na configuração do NGINX para um novo site HTTPS?

Estou com um problema, estou tentando capturar todos os scripts PHP, exceto um em minha configuração NGINX para minha configuração de domínio HTTP:

Eu tenho uma regra geral para todos os arquivos PHP

    location ~ \.php$ {

    include fastcgi_params;

    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    # With php5-fpm:
    fastcgi_pass unix:/var/run/php7.4-fpm.$user.sock;
    #fastcgi_pass php7-fpm-sock;

    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_read_timeout 600;
}

Mas preciso lidar com o script PHP antigo do site antigo para redirecionar para um link HTTPS (com uma estrutura diferente).

Eu tentei colocar isso no manipulador PHP, emlocalização / {}bloco, emlocalização/download {}bloco, mas tudo falha e o gatilho padrão é acionado neste script (404 no manipulador PHP)

    rewrite ^/download\.php\?file_id=(.*)$ https://$server_name/download/id/$1 permanent;

Como lidar com isso corretamente? Onde colocar essa exceção na configuração do NGINX para que funcione? O que estou fazendo de errado?

PS. Preciso manter uma configuração HTTP separada para outras coisas.

Responder1

Ok, encontrei a resposta. A ordem das operações é importante, está bem explicada em

https://stackoverflow.com/questions/59846238/guide-on-how-to-use-regex-in-nginx-location-block-section

E a solução fica assim:

location ^~ /download.php {
    rewrite ^ https://$server_name/download/id/$arg_file_id permanent;
}

informação relacionada