使用nginx重写错误格式化的URL

时间:2013-10-22 02:32:09

标签: regex nginx get rewrite

我有一个脚本可以创建一个包含某些链接的循环,如下所示:

http://example.com/index.php?print=1
http://example.com/index.php?print=1?print=1
http://example.com/index.php?print=1?print=1?print=1
http://example.com/index.php?print=1?print=1?print=1?print=1

我希望有一个重写(301重定向)规则,将包含?print = 1的任何网址重定向到同一个网址但只有一个?print = 1

示例:

http://example.com/index.php?print=1?print=1?print=1?print=1?print=1?print=1

重定向到

http://example.com/index.php?print=1

http://example.com/somefolder/?print=1?print=1?print=1?print=1

重定向到

http://example.com/somefolder/?print=1

http://example.com/randomfilename.php?print=1?print=1?print=1

重定向到

http://example.com/randomfilename.php?print=1

对此有任何帮助将不胜感激,nginx和regex / rewrites对我来说仍然是新的......

1 个答案:

答案 0 :(得分:0)

嗯,我不确定这是否有效,但我们可以试试,

在服务器块或location /

中添加这些行
if ($args ~ "(print=1\?print=1)") {
    return 301 $scheme://example.com$request_uri?print=1;
}