我要重定向包含查询字符串(?)的所有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;
}
答案 0 :(得分:0)
您添加的解决方案效率低下,因为它涉及为每个请求评估一个正则表达式语句,然后针对第一次匹配的任何请求进行重写和第二次评估您的正则表达式。
比正确地执行操作要简单得多。在Nginx中,$args
变量保存查询字符串,因此,如果您只是想在每次将以下行添加到配置中时都删除查询:
set $args '';
就是这样。没有更多的查询字符串。