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
E a solução fica assim:
location ^~ /download.php {
rewrite ^ https://$server_name/download/id/$arg_file_id permanent;
}