NGINX:重写url以更改为hash / anchor

时间:2014-12-11 07:13:32

标签: url mod-rewrite nginx

我很难告诉NGINX重写某些网址,其中包含网址中的& option = xxxx。

URL由域部分(http://www.test.com/),数据库引用部分(?database = demo)和连续变量(& xxxx = xxxx)构成。我想要&的第一个例子。永远是#

原始网址如下所示:

http://www.test.com/?database=demo&option=sign&type=new

我希望NGINX将URL重写为:

..网站../数据库=演示#选项=符号&安培;类型=新

注意从&选项更改为#option。

为了使事情复杂化,下一个URL应保持不变,因为它不是&的第一个实例。 #已经设置好了:

..网站../数据库=演示#模型=过程&安培; activion =无&安培;选项=符号&安培;类型=新

也许我以错误的方式解决这个问题。也许更容易告诉NGINX取代第一个&在URL和#中,如果它还不是#,那就是我之后的效果。即使在这里,我也失去了如何实现这一目标。

感谢您的帮助和指导。

1 个答案:

答案 0 :(得分:-1)

您可以检查查询字符串是否只有database = demo。如果不是 - 用哈希重定向。正如我所说,如果在浏览器中你输入/?database = demo#model = process - nginx将只获得/?database = demo

location / {
   if ($args ~ "^database=demo&(.+)$") {
       set $optherargs $1;
       return 301 /?database=demo#$otherargs;
   }
}

但是这个解决方案是args命令敏感的,database = demo需要是第一个param