网址最后面不带斜杠与带斜杠有什么区别
- 文件与文件夹
- 解析 URL
关于网址中最后面的那个斜杠 /
,很多人习惯性的不输入,原因是他们认为有或者没有没有区别。但这要归功于服务器那端的开发人员的努力。实际上,从概念上来讲,URL 的后缀带斜杠与不带是有区别的。解释这个原因之前,首先需要知道文件与文件夹的区别。
文件与文件夹
文件代表用户存放的数据,而文件夹代表了文件之间的、由用户自定义的逻辑位置分布。从概念上讲,文件会占用一定的大小,而文件夹不会,因为文件夹不是数据本身。
文件夹也可称为目录(有人认为文件夹(folder)与目录(directory)不是一码事。深究起来,的确如此。不过如果不加入深究,就本文而言,这两个概念是一码事)。如果从数据结构的观点来看,将文件与文件夹看作是一个多叉树,并规定此多叉树的非终端结点上不能存放数据,则文件就相当于此多叉树的终端结点,而文件夹则相当于此叉树的非终端结点。
平时,当我们问“这个文件夹有多大”时,实际上问的是这个文件夹内的文件以及其各级子文件夹内的文件的大小总合,其中,这里“文件夹内的文件”仅指与这个文件夹(目录)下一级的目录同级的文件。
解析 URL
一个日常见到的 URL 的格式如下:
比如下面的这个笔者虚构的网址:(此网址是笔者虚构的,笔者也不知道此网址对应的网站是否存在。为了安全,希望读者不要因为好奇而点开此网址。)
协议名与域名这个不易混淆,容易混淆的是这之后的内容 /dir/page.html
。很多人知道这是一种相对路径,不过实际上这个概念还可以再拆解。
- 根目录:/
- 文件夹:dir/
- 文件:page.html
这就是说,紧跟域名之后的斜杠 /
,实际上指根目录。在路径中,一个标识符如果后面带斜杠 /
,说明该标识符为一个文件夹的名称,如果不带斜杠 /
,说明该标识符为一个文件的名称。
有时也能看到直接访问目录的情况。如下面的网址代表访问的是根目录:
按照前面的概念,文件夹不是数据,所以最终访问的内容不能是文件夹。在这种情况下,将默认访问该目录设置的该目录下的某个文件,如 index.html
等。
有时,使用后缀斜杠 /
来标识文件夹这种规则可适当放宽,比如对于路径中的最后一个标识符:
这里,unknown 可以为一个文件名,也可以为文件夹名。这种不确定因素存在的合理性在于,一般操作系统不会允许文件名与文件夹名相同。也就是说,如果上述的目录 dir 下存在名为 unknown 的文件,则不可能同时存在名为 unknown 的文件夹。
不过,不要小看用户的创造能力。有的人在输入网址时,甚至连紧跟域名之后的斜杠以及之后的所有内容都不给出了,比如:
不要指望让用户输入网址之前,先学习 URL 的语法。因此,需要对此情形作出规定。在这种情况下,访问的是该域名设置的默认文件(有时也称为主页(home page))。注意,从概念上,这访问的并不是根目录,不过,通常设置为根目录。
另外,上面给出的只是一种对 URL 的默认解释。实际上,无论用户输入怎样的 URL,在服务器一端,开发人员都可以自由地解释与决定用户的访问。不过,应使用一种公认的标准来解析与引导用户的访问。