NGINX unescapes%2f转正斜线。我怎样才能阻止它?

问题描述:

假设我想在URL中编码文章标题并包含斜杠。如果我URL编码文章标题,我得到:NGINX unescapes%2f转正斜线。我怎样才能阻止它?

http://example.com/articles/foo%2fbar/view/ 

NGINX通过这个我FastCGI应用程序为:

http://example.com/articles/foo/bar/view/ 

其中,而遗址的想法。

我注意到,如果NGINX正在服刑的文件,说/path/to/page.html,那么可以通过以下两种网址达到:

http://example.com/path/to/page.html 
http://example.com/path/to%2fpage.html 

然而,这是不是这样的(例如)Apache。

有什么办法可以解决这个问题吗?

我试过了文档和谷歌没有运气。

谢谢。

UPDATE

nginx的配置:

worker_processes 1; 
pid ./nginx.pid; 
events { 
    worker_connections 1024; 
} 
http { 
    server_tokens off; 
    server { 
     listen 80; 
     server_name localhost; 
     location /mysite/{ 
      fastcgi_pass unix: ./mysite.fcgi.socket; 

      fastcgi_param SERVER_NAME $server_name; 
      fastcgi_param SERVER_PORT $server_port; 
      fastcgi_param SERVER_PROTOCOL $server_protocol; 
      fastcgi_param SCRIPT_NAME "/mysite/"; 
      fastcgi_param PATH_INFO $fastcgi_path_info; 
      fastcgi_param REQUEST_METHOD $request_method; 
      fastcgi_param QUERY_STRING $query_string; 
      fastcgi_param CONTENT_TYPE $content_type; 
      fastcgi_param CONTENT_LENGTH $content_length; 
      fastcgi_pass_header Authorization; 
      fastcgi_intercept_errors off; 
     } 
    } 

} 
+0

什么是你的nginx的配置是什么样子? – Amber

+0

另请参阅https://*.com/a/37584637/873282 – koppor

尝试逃离 “%” 为 “%25”

http://example.com/articles/foo%252fbar/view/ 
+0

不是一个坏主意(+1),尽管它感觉就像试图修复错误的位。 (改变我的转义/ unescaping,而不是改变nginx的行为) – DaedalusFall

+1

嗯,你可以实现这个相当直接的改变,或者设置改变核心代码。看看潮流如何流动并与之合作或试图改变潮流。这完全是关于选择。 – Dayo

+0

:-)我很希望它会是一个简单的配置文件更改。事实证明,我发现为PATH_INFO传递$ uri是可行的,但是你必须在代码中剥离最后的东西,所以这看起来也是错误的。但是就像你说的,潮汐......如果我没有找到$ uri,我可能会实现你的%252f想法。 – DaedalusFall

你不会有任何麻烦,如果你使用的网址查询参数。 当你可以控制你的服务器的路线,你可以去:

http://example.com/articles/view/?path=foo%2fbar

和nginx的不会碰%2F