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

 我来答
天然槑17
2022-07-31 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6510
采纳率:100%
帮助的人:37.5万
展开全部

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

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

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

例如:

对于服务器来说,如果访问的是目录,则会根据规则访问改目录下的默认文件(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请求有效,这实际上是必需的,其原因如下:

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

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

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式