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
或:
有关详细信息,请参阅。谢谢。问题似乎是双重编码,因此单编码重定向似乎是解决方案。