Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/nginx/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect 如何编写nginx重写来路由具有特定查询变量的所有url_Redirect_Nginx - Fatal编程技术网

Redirect 如何编写nginx重写来路由具有特定查询变量的所有url

Redirect 如何编写nginx重写来路由具有特定查询变量的所有url,redirect,nginx,Redirect,Nginx,我有几个(15+)这样的网址 site.com/q=something/plus此子文件夹 site.com/q=somethingelse/plus其他子文件夹 我想把所有这些都重写到root/。这些都是非常古老的内容,不需要路由到其他任何地方 我试过: if ($request_uri ~ "([^\?]*)\?(.*)q=([^&]*)&?(.*)") { set $original_path $1; rewrite ^ "${original_path}"

我有几个(15+)这样的网址

site.com/q=something/plus此子文件夹

site.com/q=somethingelse/plus其他子文件夹

我想把所有这些都重写到root/。这些都是非常古老的内容,不需要路由到其他任何地方

我试过:

if ($request_uri ~ "([^\?]*)\?(.*)q=([^&]*)&?(.*)") {
    set $original_path $1;
    rewrite ^ "${original_path}" permanent;
}


正如评论中所讨论的,您的第二种方法应该可以很好地工作

if ($arg_q) {
    return 301 /;
}

现在还不清楚你有什么问题,特别是你提到的第二种方法,它肯定会起作用。我不知道为什么,但我再次尝试了第二种答案,它起了作用。谢谢你让我再试一次,小伙子,成功了!我把它作为答案贴了出来,然后说::-)既然问题解决了,你能接受答案吗?谢谢平——答案有什么问题吗?如果你没有得到赏金,我很抱歉。有没有其他方法可以给你奖金?唯一的方法就是开始一个新的(关于这个问题或任何其他问题)。@TJSherrill,噢,哇,谢谢!我没想到你会真的开始另一个。这次一定要奖励它——因为你在重新启动之前已经接受了我的答案,它不会自动获得奖励,但我认为你仍然可以手动将它奖励给现有的答案。如果你有任何问题,请告诉我!
if ($arg_q) {
    return 301 /;
}