示例:
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 :(得分:0)
确保路径连接始终有效是一种破解。
假设我想将/someDirectory
与该目录中的文件连接起来。我们的系统只允许我们使用字符串/someDirectory
。在某些系统上,它们错误地允许相对(而非绝对)路径以/
开头。每当发生这种情况时,可能会发现文件字符串/file
的文件(不正确,因为它应该是相对的而不是绝对的)。然后当串联串时,结果可能是:
/someDirectory/file
但是如果正确输入了实际的文件路径,连接后就会讽刺地失败:
/someDirectoryfile
在第二种情况下,文件字符串file
是正确的但结果不正确。因此,某些软件允许文件的绝对名称和终端名称,即file
或/file
。他们通过使根路径包含或不包含尾部斜杠来实现此目的。
如果需要,可以使用正则表达式检测所有尾随斜杠条件。但是,将斜杠留在路径字符串的最左边部分始终是最好的约定。这意味着/someDirectory/
优于/someDirectory
。这是因为/someDirectory
如果添加到路径字符串的下一个内容是/file
,则/
表示/file
是绝对路径而不是相对路径。因此,在进行字符串操作时,在最左边的部分留下斜杠。
答案 1 :(得分:0)
如果你需要两者,你可以使用正则表达式进行下注,没有尾随斜杠
location ~ ^/assets(?:/(.*))?$ {
alias /path/to/assets/$1;
}
这取决于您如何设置应用程序及其目录以保持一致。