NGINX échappe à% 2f à une barre oblique. Comment puis-je l’arrêter?

Supposons que je veuille encoder un titre d’article dans une URL et qu’il contienne une barre oblique. Si je URL encoder le titre de l’article, j’ai:

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

NGINX transmet cela à mon application FastCGI en tant que:

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

Ce qui gâche plutôt l’idée.

Je remarque que si NGINX sert un fichier, disons /path/to/page.html, alors il peut être atteint par l’une des deux URL suivantes:

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

Cependant, ce n’est pas le cas pour (par exemple) Apache.

Est-il possible de corriger ce comportement?

J’ai essayé les documents et Google sans succès.

Merci.

METTRE À JOUR

nginx config:

 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_ssortingng; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; } } } 

Essayez d’échapper à “%” en tant que “% 25”

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

Vous n’aurez aucun problème si vous utilisez les parameters de requête URL. Lorsque vous pouvez contrôler les routes de vos serveurs, vous pouvez opter pour:

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

et nginx ne touchera pas% 2f