在关于 jQuery Ajax 问题的问题中,提问者试图在相对 URL 的开头使用
.
。我建议他把它去掉,但不知道那里的点实际上有什么作用。
他的相对网址如下所示:
./delete-misc/test-ajax-code.php
我尝试查看 RFC,但没有成功。我知道点在命令行(Linux 或 Win)中的作用,它代表当前目录。
我想知道:这在互联网上的 URL 中是如何工作的?它有任何最佳实践用途吗?欢迎详细解释。
.
通常用在相对路径引用的开头,并在引用解析期间被删除,即将相对URI引用解析为绝对URI的过程:
路径段“
”和“.
”,也称为点段,是 为路径名层次结构中的相对引用而定义。他们 用于相对路径引用的开头 (第 4.2 节)指示层次结构中的相对位置 名字树。这类似于他们在某些运营中的角色 系统的文件目录结构来指示当前目录 和父目录。但是,与文件中不同 系统中,这些点段仅在 URI 路径内解释 层次结构并作为解决过程的一部分被删除(部分 5.2)。..
有删除点段算法描述了如何在特定的基本路径上下文中解释这些点段。
在您的情况下,
./delete-misc/test-ajax-code.php
和 delete-misc/test-ajax-code.php
是等效的。但在某些情况下,相对路径可能会被误解为绝对 URI,例如在第一个路径段中有一个 :
,例如 search:foo
,它与 ./search:foo
不同,因为前者是绝对 URI,而后者是相对 URI 路径。
A
./
相当于当前路径。所以 ./delete-misc/test-ajax-code.php
和 delete-misc/text-ajax-code.php
都是相对路径。在您发布的答案中,您要求仅删除点,因此 /delete-misc/test-ajax-code.php
的路径将转换为绝对路径而不是相对路径。
编辑:还有一件事 -
.
是当前目录,..
是父目录。正如 phihag 评论的那样,这些确实应该在代码中避免和保护。目录遍历可用于作恶。
.
和 ..
不等同!
./
和 ../
不等同!
.
和 ./
ARE 相当于
在所有情况下,
.
和./
与
或“”相同,或者没有路径,因此不需要或在网络上使用。
.
(点)是旧 UNIX 路径系统 的遗物,不用于在 万维网 上创建路径!为什么?因为路径中的点是多余的,相当于“”或no path
或您所在的当前文件目录。同样的结果适用于使用./
。它与“”或no path
相同。两者都只是引用您的文件所在的本地目录(“./webpage.html”=“webpage.html”)。
我应该使用什么路径?
.
或./
,因为这两条路径都是不相关的!../
,这是一个相对路径,表示向上一个文件夹。/
,这是绝对路径,表示从网站根文件夹开始。想要更多证据吗?
查看这些图像路径的结果。假设您从存储在网站根目录中的 HTML 网页引用这些路径:
SUCCESSFUL PATHS ("../" and "/" paths work well on the Web)
<img src="../images/photo.jpg" />
<img src="/images/photo.jpg" />
REDUNDANT PATHS ("." not needed)
<img src="/images/./photo.jpg" />
...same as...
<img src="/images/photo.jpg" />
<img src="/images./photo.jpg" />
...same as...
<img src="/images/photo.jpg" />
FAILED PATHS ("." in paths that fail on the Web)
<img src="/images/.photo.jpg" />
<img src="./images/photo.jpg" />