29

我有一个脚本文件。

<script src="~/Scripts/angular.js"></script>

看路径是~/Script。但是,如果我输入../../而不是~/,那么过程也相同。

我的网站网址如:https://sample.com/Scripts/angular.js

如果我之前输入../../Scripts,那么它会自动更改以前的 URL (https://sample.com/Scripts/angular.js)

网址流程是什么?它怎么能自动改变?请说说两者之间的区别./, ../ , ../../ , ~/ ,/Scripts ,Scripts

4

2 回答 2

52

这些路径组件是具有特定含义的快捷方式:

  • .表示当前路径级别(因此,如果您打开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,但是当您将鼠标悬停在它上面时,浏览器会显示它是http://www.mysite.com/somePage.aspx。这是因为浏览器已经将前者的相对路径转换为后者的绝对路径
于 2013-10-09T13:22:35.527 回答
20

让我们来看看...

 .    = 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 系统。

于 2013-10-09T13:10:54.003 回答