我有一個問題,我正在嘗試捕獲除 NGINX 配置中的 HTTP 域配置中的一個之外的所有 PHP 腳本:
我對所有 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;
}
但我需要處理舊網站中的舊 PHP 腳本以重定向到 HTTPS 連結(具有不同的結構)。
我嘗試將其放入 PHP 處理程序中地點 / {}塊,在位置/下載{}阻止,但一切都失敗了,並且默認觸發器被拉到這個腳本上(PHP處理程序中的404)
rewrite ^/download\.php\?file_id=(.*)$ https://$server_name/download/id/$1 permanent;
如何正確處理?在 NGINX 配置中將該異常放在哪裡才能使其正常運作?我究竟做錯了什麼?
附言。我需要為其他事情保留一個單獨的 HTTP 配置。
答案1
好的,我找到答案了。操作順序很重要,在以下位置有很好的解釋
解決方案如下所示:
location ^~ /download.php {
rewrite ^ https://$server_name/download/id/$arg_file_id permanent;
}