asp.net中的文件路径(URL)上的./,.. /,.. / .. /,〜/之间有所不同

我有一个脚本文件。

 

看路径是~/Script 。 但如果我输入../../而不是~/ ,此过程也是一样的。

我的网站url如下: https://sample.com/Scripts/angular.jshttps://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.csshttp://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系统。