2016-06-23 104 views
0

例子:什麼`/路徑之間的差/要/ DIR /`&`/路徑/到/ dir`

nginx.conf

location ^~ /assets { 
    alias /path/to/assets; 
} 

location ^~ /assets { 
    alias /path/to/assets/; 
} 

location ^~ /assets/ { 
    alias /path/to/assets; 
} 

location ^~ /assets/ { 
    alias /path/to/assets/; 
} 

什麼是這些代碼之間的區別?

+0

您已經標記了[bash]和[shell],但以'nginx.conf'文件爲例。尾部斜線的意義可能取決於上下文,所以請澄清您實際詢問的內容。 –

回答

0

確保路徑連接一直工作是一種破解。

假設我想連接/someDirectory與該目錄內的文件。而我們的系統只允許我們使用字符串/someDirectory。在某些系統中,它們錯誤地允許相對(而不是絕對)路徑以/開頭。只要發生這種情況,可能會發現文件字符串爲/file(錯誤,因爲它應該是相對不絕對的)。然後,當字符串連其結果可能是:

  1. /someDirectory/file

但實際文件路徑正確鍵入,它將具有諷刺意味的並置後失敗:

  • /someDirectoryfile
  • 在第二種情況下的文件串file是正確的,但該RESU這是不正確的。因此,一些軟件允許文件的絕對名稱和終端名稱,即file/file。他們通過使根路徑包含或不包含尾部斜線來做到這一點。

    如果需要,可以使用正則表達式來檢測所有結尾斜槓條件。但是,將斜線留在路徑字符串的最左側部分始終是最好的約定。這意味着/someDirectory//someDirectory更好。這是因爲如果/someDirectory如果添加到路徑字符串的下一個東西是/file,那麼將由/指示/file是絕對路徑而不是相對的。因此,在進行字符串操作時,請在最左邊的部分留下斜槓。

    0

    你是在打賭關閉使用正則表達式,如果你沒有斜線

    location ~ ^/assets(?:/(.*))?$ { 
        alias /path/to/assets/$1; 
    } 
    

    兩者都需要,用出這取決於你如何設置你的應用程序,它的目錄,以保持一致性。

    相關問題