我有
_escaped_fragment_
之类的糟糕GET参数索引(有关转义片段的更多信息,请参见更多Yandex man page)nginx
作为许多不同前端应用程序前面的反向代理因此,我只需要对所有具有某些GET参数的所有页面进行301重定向到同一页面,而无需任何get参数。例如
example.com/some/long/path?_escaped_fragment_=
应该被重定向到301
example.com/some/long/path
我可以通过在每个前端应用程序中添加此逻辑来做到这一点,或者可以在nginx配置中做到这一点。我更喜欢使用第二种变体。
潜在的解决方案可以包括
$request_uri
的args 答案 0 :(得分:0)
我已经用这种方式解决了最初的问题
将以下代码添加到我的http context
中,以定义请求uri路径,而没有来自$request_uri
的参数(此处我们使用map module)
map $request_uri $request_uri_path {
"~^(?P<path>[^?]*)(\?.*)?$" $path;
}
将以下代码添加到我的server context
中,以将GET参数中带有301 redirect
的页面制作为_escaped_fragment_
到没有任何GET参数的相同页面(此处我们使用{{3} })
if ($args ~* "_escaped_fragment_") {
rewrite ^ $scheme://$host$request_uri_path? permanent;
}
这对我有用。