2011-11-25 151 views
16

假設我想在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://stackoverflow.com/a/37584637/873282 – koppor

回答

2

嘗試逃離 「%」 爲 「%25」

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

不是一個壞主意(+1),儘管它感覺就像試圖修復錯誤的位。 (改變我的轉義/ unescaping,而不是改變nginx的行爲) – DaedalusFall

+1

嗯,你可以實現這個相當直接的改變,或者設置改變核心代碼。看看潮流如何流動並與之合作或試圖改變潮流。這完全是關於選擇。 – Dayo

+0

:-)我很希望它會是一個簡單的配置文件更改。事實證明,我發現爲PATH_INFO傳遞$ uri是可行的,但是你必須在代碼中剝離最後的東西,所以這看起來也是錯誤的。但是就像你說的,潮汐......如果我沒有找到$ uri,我可能會實現你的%252f想法。 – DaedalusFall

0

你不會有任何麻煩,如果你使用的網址查詢參數。 當你可以控制你的服務器的路線,你可以去:

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

和nginx的不會碰%2F

相關問題