./ , ../ , ../../ , ~/ 在 asp.net 中的文件路径(URL)上的区别
Posted
技术标签:
【中文标题】./ , ../ , ../../ , ~/ 在 asp.net 中的文件路径(URL)上的区别【英文标题】:Different between ./ , ../ , ../../ , ~/ on file path(URL) in asp.net 【发布时间】:2013-10-16 20:47:53 【问题描述】:我有一个脚本文件。
<script src="~/Scripts/angular.js"></script>
看到路径是~/Script
。但是如果我输入了../../
而不是~/
,那么这个过程也是一样的。
我的网站网址如:https://sample.com/Scripts/angular.js
如果我在Scripts
之前输入../../
,那么它会自动更改以前的URL(https://sample.com/Scripts/angular.js)
。
url 流程是什么?它怎么能自动改变?请说说
./, ../ , ../../ , ~/ ,/Scripts ,Scripts
的区别?
【问题讨论】:
当您在浏览器中看到 URL “变成”了什么时,您具体在看什么?提供给浏览器的原始页面源,还是浏览器呈现该源后 DOM 的当前状态? @David : 点击this Url 然后在 Schin+Tendulkar-9178.jpg 之前输入 ../../ 。 确实,以这种方式更改 URL 意味着从不同的“文件夹”请求相同的文件(因为 URL 可能会映射到文件夹,但这完全是另一回事)。由于文件不在后一个位置,因此您会收到 404 响应。 【参考方案1】:让我们看看...
. = 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 系统。
【讨论】:
用户的主目录? Linux/Unix?问题是关于 ASP.NET,而不是关于 Linux 文件系统。 (另请注意:这些文件系统约定并不是 Linux/Unix 独有的。它们几乎适用于任何地方。) @David 例外是 ~,Windows 无法理解。这一点在“与问题无关”和“有帮助”之间的边界上。但是,是的,Linux/Unix 和 Internet,或者更简单地说,不是 Windows。【参考方案2】:这些路径组件是具有特定含义的快捷方式:
.
表示当前路径级别(因此,如果您使用的是 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 浏览器不知道如何处理~
。这只能用于在服务器端组件中预处理的路径中。然后,服务器端组件将知道根据应用程序相对于 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
。这是因为浏览器已经将前者的相对路径转换成了后者的绝对路径。
【讨论】:
@WaqarNaeem:为什么不呢?你试过了吗?你遇到问题了吗?以上是关于./ , ../ , ../../ , ~/ 在 asp.net 中的文件路径(URL)上的区别的主要内容,如果未能解决你的问题,请参考以下文章
在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?