Nginx 重新導向特定 URL

Nginx 重新導向特定 URL

對於我們網站的 nginx 中的伺服器區塊,我有以下位置指令:

location ~* ^.+\.(ico|css|js|eot|woff|otf|svg|gif|jpe?g|png|swg|woff2)(\?[a-z0-9=_]+)?$

location /applications/

location /

location ~ \.php$

我有一個來自舊論壇軟體的特定 URL,我想重定向該 URL。網址如下圖所示:

https://www.example.com/forums/forumdisplay.php?f=105

到目前為止,我嘗試過的所有內容似乎都與此 URL 不符。我在 / 位置嘗試了一些不同的重寫語句,並且還嘗試了精確匹配,認為最長的匹配應該獲勝:

location = /forums/forumdisplay.php?f=105 {
    return 301 https://newurl;
}

這不起作用 - 我仍然從此 URL 收到 404 錯誤。我應該在哪裡/如何進行此重定向?

答案1

一種方法是使用:

location = /forums/forumdisplay.php {
    if ($arg_f = 105) {
        return 301 https://newurl;
    }
    fastcgi_pass /path/to/php.sock; # Send the request to PHP processor
}

此方法將匹配查詢參數設為 105 的/forums/forumdisplay.phpURL f,並且可以有其他查詢參數。

註釋中的範例需要與完整 URL 完全匹配,如果 URL 碰巧是,則不起作用

http://example.com/forums/forumdisplay.php?f=105&fbclid=4567

相關內容