對於我們網站的 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.php
URL f
,並且可以有其他查詢參數。
註釋中的範例需要與完整 URL 完全匹配,如果 URL 碰巧是,則不起作用
http://example.com/forums/forumdisplay.php?f=105&fbclid=4567