【发布时间】:2014-12-11 21:35:52
【问题描述】:
我很难告诉 NGINX 重写某些 URL,这些 URL 中包含 &option=xxxx。
URL 由域部分 (http://www.test.com/)、数据库引用部分 (?database=demo) 和连续变量 (&xxxx=xxxx) 构成。我希望 & 的第一个实例始终是 #
原始网址如下所示:
http://www.test.com/?database=demo&option=sign&type=new
我希望 NGINX 将 URL 重写为:
..website../?database=demo#option=sign&type=new
注意从 &option 到 #option 的变化。
更复杂的是,下一个 URL 应该保持不变,因为它不是 & 的第一个实例,并且 # 已经设置:
..website../?database=demo#model=process&activion=none&option=sign&type=new
也许我做错了。也许告诉 NGINX 将 URL 中的第一个 & 替换为和 # 如果它还不是 # 会更容易,因为这就是我想要的效果。即使在这里,我也不知道如何实现这一目标。
感谢您的帮助和指导。
【问题讨论】:
-
你需要了解nginx可以重定向到带有hash的URI,但是nginx在传入的请求中看不到hash部分(因为hash - 它是用于浏览器的)。因此,如果您输入 /?database=demo#model=process&activion=none&option=sign&type=new - nginx 只会看到 /?database=demo。
-
我知道处理是在完全不同的位置完成的。 # 是客户端,而 & 确实被传递到服务器。经过一番尝试,我正在解决的问题有一个完全不同的解决方案。我使用 & 和 # 发送变量,以便它们在 Javascript 和 PHP 中得到处理。所以test.com/…,这对我有用。
-
奇怪的解决方案 :) JavaScript 也可以处理 /?database=demo&option=sign&type=new 而没有任何哈希。
标签: url mod-rewrite nginx