使用" +"重定向规则在字符串中不起作用

时间:2015-05-05 11:52:41

标签: redirect nginx

我正在使用Nginx并在网站的.conf中设置了一些重定向规则,例如

if ($query_string ~ "Search=shelving"){ rewrite .*$ /shelving.html? redirect; }

因此,"Search=shelving"的任何网址都会重定向到/shelving.html

这样可以正常工作,但我有其他规则在字符串中有+,这些规则不起作用,例如

if ($query_string ~ "Search=metal+shelving"){ rewrite .*$ /shelving.html? redirect; }

这不起作用,我认为+正在打破它,无论如何都在这周围?

由于

编辑:

我希望重定向的网址示例是:

https://example.com/SearchResults.aspx?Search=metal+shelving

https://example.com/shelving.html

2 个答案:

答案 0 :(得分:0)

我会写这样的东西:

map $arg_search $redirect_url {
  default "";
  "metal shelving" /shelving.html;
  "metal+shelving" /shelving.html;
  "metal%2bshelving" /shelving.html;
  "metal%2Bshelving" /shelving.html;
}

server {
  ...
  if ($redirect_url) {
    return 301 $redirect_url;
  }
  ...
}

只是为了涵盖所有可能的网址编码。

答案 1 :(得分:0)

你应该像这样更新你的nginx规则

if ($query_string ~ "Search=metal\+shelving"){ rewrite .*$ /shelving.html? redirect; }