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;
}
}
}
尝试逃离 “%” 为 “%25”
http://example.com/articles/foo%252fbar/view/
不是一个坏主意(+1),尽管它感觉就像试图修复错误的位。 (改变我的转义/ unescaping,而不是改变nginx的行为) – DaedalusFall
嗯,你可以实现这个相当直接的改变,或者设置改变核心代码。看看潮流如何流动并与之合作或试图改变潮流。这完全是关于选择。 – Dayo
:-)我很希望它会是一个简单的配置文件更改。事实证明,我发现为PATH_INFO传递$ uri是可行的,但是你必须在代码中剥离最后的东西,所以这看起来也是错误的。但是就像你说的,潮汐......如果我没有找到$ uri,我可能会实现你的%252f想法。 – DaedalusFall
你不会有任何麻烦,如果你使用的网址查询参数。 当你可以控制你的服务器的路线,你可以去:
http://example.com/articles/view/?path=foo%2fbar
和nginx的不会碰%2F
什么是你的nginx的配置是什么样子? – Amber
另请参阅https://*.com/a/37584637/873282 – koppor