我很难告诉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和#中,如果它还不是#,那就是我之后的效果。即使在这里,我也失去了如何实现这一目标。
感谢您的帮助和指导。
答案 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