URL最后结尾斜杠(/)加与不加区别

您所在的位置:网站首页 pass后面加什么 URL最后结尾斜杠(/)加与不加区别

URL最后结尾斜杠(/)加与不加区别

2023-08-11 21:15| 来源: 网络整理| 查看: 265

背景

最近在使用nginx搭建网站或前后端分离部署项目时遇到了一个疑惑,就是在浏览器中请求url时,最后一个反斜杠作用到底是什么?

参阅了网上的文章,记录一下

https://blog.csdn.net/bruce_6/article/details/82219522 https://blog.csdn.net/sosous/article/details/48784927 https://blog.csdn.net/u010525694/article/details/78591355 解释

有没有反斜杠的意义在于该url是指向一个文件还是一个目录,说明url地址是精准表达指向的,有无'/'代表的是两个不同的地址。

例如:

http://kayosite.com/fxg 指向的是网站根目录下一个名为fxg的文件 http://kayosite.com/fxg/ 指向的是网站根目录下一个名为fxg的目录

对于服务器来说,如果访问的是目录,则会根据规则访问该目录下的默认文件(index.html、index.htm之类)如nginx中index指令。如访问/fxg/服务器会寻找/fxg/index.html文件(nginx里location中root/alias指令对应目录),而访问/fxg服务器则会寻找/fxg文件。

对于用户来说,在大多数情况下这两个网址没有任何区别,他们访问的都是网站 fxg 目录下的默认首页。一般用户也都知道最后一个斜杠是可有可无的,他们输入网址的时候一般都只会输入 http://kayosite.com/fxg。

当 Web 服务器接收到某个末尾不含斜杠的 url 请求时,例如 http://kayosite.com/fxg,这时服务器会搜索网站根目录下有没有名为 fxg 的文件,如果没有就把 fxg 当做目录处理,此时服务器会执行301永久重定向处理将/fxg重定向到/fxg/目录,然后返回 fxg 目录下的默认首页。 注意:在nginx中如果使用非80端口重定向时会出现301丢失端口问题,这个后面文档单独解释

浏览器自动添加末尾斜杠(/)

当我们访问一个网址时,例如www.xxx.com,此时浏览器会自动帮我们添加上后面的斜杠(/)注意:有些浏览器会自动隐藏/,例如:chrome。 这是因为,访问请求必须从"/"开始,即使是裸url,浏览器此时替我们做了正确的修正,在url后面自动的加上了"/"从而能正确访问。

所有主流浏览器在请求裸域URL(即首页)时都会对HTTP请求 “加斜杠” 。为了使HTTP请求有效,这实际上是必需的,其原因如下:

http://example.com/ ---------------------------------- GET / HTTP/1.1 Host: example.com

请注意/第一行中的(斜杠)-这是所请求的URL。这里什么都没有是无效的。从RFC 2616开始:

请注意,绝对路径不能为空;如果原始URI中没有任何内容,则必须将其指定为“ /”(服务器根目录)。

你可以查看浏览器向服务器发出的HTTP请求。显示在“浏览器状态栏”中的URL,甚至地址栏中的URL可能因浏览器不同而不同。谷歌Chrome并不会追加在状态栏最后的斜线,虽然斜线是存在的。

如果指定http://example.com(无斜杠),此时不会发生301重定向,因为浏览器会在发出HTTP请求之前先对其进行了修正。

请注意,这与URL中存在路径/目录时(http://xxx.com/yyy)在URL末尾添加斜杠不同。如果您请求http://example.com/directory(不使用斜杠),此时浏览器不会自动添加一个斜杠,大多数服务器如果找不到该文件则将301重定向到http://example.com/directory/(斜杠)目录进行加载。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3