NGINX上的重定向URI

NGINX上的重定向URI,nginx,Nginx,我的站点上有一个页面(仅登录用户可以访问),如下所示: location ~ /forum%252Fnew { return 301 https://www.example.com/forum/new; } 但是,有时当用户单击或刷新时,他们会看到如下页面: 现在%25解码为%符号,%2f解码为“/”,因此URI似乎是双重编码的 我不确定这种编码是如何发生的,但我认为一种解决方法是让Nginx重定向回正确的URL,如下所示: location ~ /forum%252Fnew {

我的站点上有一个页面(仅登录用户可以访问),如下所示:

location ~ /forum%252Fnew {
    return 301 https://www.example.com/forum/new;
}

但是,有时当用户单击或刷新时,他们会看到如下页面:

现在%25解码为%符号,%2f解码为“/”,因此URI似乎是双重编码的

我不确定这种编码是如何发生的,但我认为一种解决方法是让Nginx重定向回正确的URL,如下所示:

location ~ /forum%252Fnew {
    return 301 https://www.example.com/forum/new;
}
我已尝试使用\来转义位置中的%,但两种方法似乎都不起作用


我遗漏了什么?

URI在被
位置
重写
指令处理之前已被解码和规范化,因此
%25
看起来像一个
%

问题中的示例显示了正则表达式
location
语句。
~
运算符用于区分大小写的匹配,而
~*
运算符用于区分大小写的匹配

要使问题中的示例有效,您需要将其更改为:

location ~* /forum%2Fnew
或:


有关详细信息,请参阅。

谢谢。问题似乎是双重编码,因此单编码重定向似乎是解决方案。