如何在Nginx中重定向所有查询字符串URL

时间:2018-09-08 16:27:54

标签: redirect nginx url-rewriting

我要重定向包含查询字符串(?)的所有url 到Nginx中查询字符串之前的url。

示例:

example.com?asd to example.com
  

example.com/?qwe example.com /

example.com/post-one?pod to example.com/post-one
  

example.com/post-one/?sadh example.com/post-one /

example.com/hi/there?kjg to example.com/hi/there
  

example.com/hi/there/buddy?jbdg example.com/hi/there/buddy

example.com/hi/there/buddy/?asgasg to example.com/hi/there/buddy/

谢谢。

更新: 找到了这个解决方案:

if ($request_uri ~ ^/([^?]*)\?) {
   return 301 /$1; 
}

1 个答案:

答案 0 :(得分:0)

您添加的解决方案效率低下,因为它涉及为每个请求评估一个正则表达式语句,然后针对第一次匹配的任何请求进行重写和第二次评估您的正则表达式。

比正确地执行操作要简单得多。在Nginx中,$args变量保存查询字符串,因此,如果您只是想在每次将以下行添加到配置中时都删除查询:

set $args '';

就是这样。没有更多的查询字符串。