nginx:如何在url中保留双斜杠

我有Web服务,它需要几个filter参数,如:

http://mydomain.com/filter1/value1/filter2/value2/filter3/value3 

棘手的是,有些filtervariables是不存在的,所以这样的URL可以传递给这个服务:

 http://mydomain.com/filter1//filter2//filter3/value3 

现在我需要configuration我的nginx(或fastcgi)来保持双斜杠。 目前它正在替代双斜杠。 我是nginx和fastcgiconfiguration的新手,我不知道该怎么做。 当我请求第二个URL时,我从我的php脚本中捕获了request_uri,并且得到了

 http://mydomain.com/filter1/filter2/filter3/value3 

Plz帮助我。 提前致谢。

 syntax: merge_slashes [on|off] default: merge_slashes on context: http, server 

你必须使用: merge_slashes off ;

我对nginx + passenger(Ruby on Rails / Rack /等)也有类似的问题,我确认默认情况下,多个斜杠被折叠(在PATH_INFOREQUEST_URI )。

添加merge_slashes off; 在nginx配置的server上下文中修复它(我现在看到多个斜杠好吧)。

另外,请确保在proxy_pass行中没有结尾的斜线!

  • 好的proxy_pass http://localhost:3000 ;

  • BADproxy_pass http://localhost:3000/ ;

根据以前的答案,解决方案是merge_slashes off; 在你的Nginx配置中。 但是,如果使用虚拟主机,则看起来需要将其包含在第一个主机中。 v1.4.1和v1.4.6就是这种情况。