如何將 NGINX 配置中的舊 PHP 腳本重新導向到新的 HTTPS 網站?

如何將 NGINX 配置中的舊 PHP 腳本重新導向到新的 HTTPS 網站?

我有一個問題,我正在嘗試捕獲除 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

好的,我找到答案了。操作順序很重要,在以下位置有很好的解釋

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

解決方案如下所示:

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

相關內容