2016-06-23 82 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; 
    } 
    

    两者都需要,用出这取决于你如何设置你的应用程序,它的目录,以保持一致性。

    相关问题