2014-11-21 53 views
2

我有一些雙斜槓我無法讓我的nginx.conf文件重寫爲單斜槓。我能夠得到它改寫大多數雙斜線的,比如我可以得到http://domain.com/feature//feature-name/http://domain.com/feature/feature-name/NGINX - 刪除.com後的雙斜槓

if ($request_uri ~ "^[^?]*//") { 
    rewrite "(.*)" $scheme://$host$1 permanent; 
} 

我遇到的問題是,如果我有一個雙斜槓緊跟在.COM,它不會重寫爲單斜槓。我遇到的兩個例子是http://domain.com//http://domain.com//features/

我試過使用merge_slashes指令和其他各種重寫。我只是不知道爲什麼他們似乎都在.com之後工作。謝謝!

回答

0

真正的問題是:你是如何得到這樣的URL

如果你正常使用nginx,你不會得到這樣的行爲,因爲nginx正在規範化URI(即它將壓縮一個相鄰的斜線,解碼URL並解析相對路徑)。

來自當前正在處理的請求的URI的標準化結果存儲在$uri變量中。

因此,下面的部分不應該是必要的

if ($request_uri ~ "//") { 
    return 301 $uri; 
}