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

相关内容