重定向 Nginx 参数

Redirecting Nginx Parameters

我继承了一个旧网站,出于 SEO 的原因,我希望将旧参数链接重定向到新 api。像这样:

www.example.com/section/?page=3 => www.example.com/page/3

这是我对正则表达式重定向的尝试:

location ~ ^/section\/\?page=(.*)/$ {
    return 301 https://www.example.com/page/;
}

我已经无数次使用这种模式,没有任何问题,但经过几个小时的探索,我仍然无法使重定向正常工作。显然 Nginx 对待参数的方式不同。

有什么建议吗?

您的正则表达式中有一个尾部斜杠,因此它只会匹配 www.example.com/section/?page=3/

尝试^/section\/\?page=(.*)$

这里不需要正则表达式,它无论如何都会增加不必要的处理开销。

Nginx 已经捕获 url 参数。您可以为所有参数使用 $args 变量,或者单独的参数以 $arg_ 为前缀,因此假设您所有的 url 都匹配此格式,您可以只使用这样的位置块:

location  /section/ {
    return 301 https://www.example.com/page/$arg_page;
}