`/ path / to / dir /`和&之间的区别是什么? `/路径/到/ dir`

时间:2016-06-23 15:57:52

标签: linux bash shell

示例:

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/;
}

这些代码有什么区别?

2 个答案:

答案 0 :(得分:0)

确保路径连接始终有效是一种破解。

假设我想将/someDirectory与该目录中的文件连接起来。我们的系统只允许我们使用字符串/someDirectory。在某些系统上,它们错误地允许相对(而非绝对)路径以/开头。每当发生这种情况时,可能会发现文件字符串/file的文件(不正确,因为它应该是相对的而不是绝对的)。然后当串联串时,结果可能是:

  1. /someDirectory/file
  2. 但是如果正确输入了实际的文件路径,连接后就会讽刺地失败:

    1. /someDirectoryfile
    2. 在第二种情况下,文件字符串file是正确的但结果不正确。因此,某些软件允许文件的绝对名称和终端名称,即file/file。他们通过使根路径包含或不包含尾部斜杠来实现此目的。

      如果需要,可以使用正则表达式检测所有尾随斜杠条件。但是,将斜杠留在路径字符串的最左边部分始终是最好的约定。这意味着/someDirectory/优于/someDirectory。这是因为/someDirectory如果添加到路径字符串的下一个内容是/file,则/表示/file是绝对路径而不是相对路径。因此,在进行字符串操作时,在最左边的部分留下斜杠。

答案 1 :(得分:0)

如果你需要两者,你可以使用正则表达式进行下注,没有尾随斜杠

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

这取决于您如何设置应用程序及其目录以保持一致。