重定向 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;
}
我继承了一个旧网站,出于 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;
}