asp.net中的文件路径(URL)上的./,.. /,.. / .. /,〜/之间有所不同
我有一个脚本文件。
看路径是~/Script
。 但如果我输入../../
而不是~/
,此过程也是一样的。
我的网站url如下: https://sample.com/Scripts/angular.js
: https://sample.com/Scripts/angular.js
如果我在Scripts
之前输入了../../
,那么它会自动更改以前的URL (https://sample.com/Scripts/angular.js)
。
什么是url流程? 它怎么能自动改变? 请告诉我们.
./, ../ , ../../ , ~/ ,/Scripts ,Scripts
之间的区别?
这些路径组件是具有特定含义的快捷方式:
-
.
表示当前路径级别(因此,如果您在index.aspx
并且引用./style.css
则后者必须与前者位于同一文件夹中) -
..
表示一个路径级别上升(所以如果你在/somefolder/index.aspx
,你引用../style.css
那么后者必须在someFolder
的父文件夹中) -
/
表示根级别(因此/style.css
与http://www.mysite.com/style.css
相同) -
~
在ASP.NET中表示服务器端应用程序根目录(所以~/index.aspx
将被转换为应用程序根目录下的index.aspx
文件的URL)
这里有很多事情需要注意:
- 服务器路径和客户端路径之间存在差异。 例如,从Web浏览器的角度来看,没有“应用程序根”。 网络浏览器不知道如何处理
~
。 这只能用于在服务器端组件中预处理的路径中。 然后,服务器端组件将知道基于应用程序相对于Web服务器的当前位置将其转换为客户端可见路径。 - 父路径说明符(
..
)没有限制。 根的父级被视为根。 所以,如果您使用的是http://www.mysite.com/someFolder/index.aspx
并且您参考了../../../../style.css
那么它将转到http://www.mysite.com/style.css
。 - 浏览器还会为您翻译路径。 这是“页面源”和“DOM”之间的差异之一。 您的页面源可能引用了
../somePage.aspx
,但是当您用鼠标将鼠标hover在它上面时,浏览器会指示它是http://www.mysite.com/somePage.aspx
。 这是因为浏览器已将前者的相对路径转换为后者的绝对路径 。
让我们来看看…
. = this directory .. = the parent directory ../ = the parent directory ~/ = the user's home directory or the application's, in ASP / = the root directory ../../ = the parent's parent directory
等等。
顺便说一句,这适用于所有Linux / Unix系统。