在浏览器中单击主页URL时会自动添加斜杠吗?


17

我之所以这样问是因为,每当我将鼠标悬停在指向主页的链接上时(例如http://www.example.com),我注意到总是在末尾添加斜杠(如在浏览器的状态栏上所观察到的)),主页链接是否包含以结尾的href属性但无论何时我在主页上,显示的URL都不会带有斜杠。

我尝试在URL栏中输入一个斜杠。在启用Firebug的情况下,我注意到该站点始终返回200 OK状态。文章在这里讨论这个状态,在末端具有斜线将避免301重定向。但是,即使在页面上,我也没有看到任何重定向。

这可能是附加斜线的浏览器功能吗?


是。例如,我认为Opera隐藏了斜杠(有时也隐藏了使我对开发痴迷的协议!)……
Matt

这里到底是什么问题?(或问题的重点。)您指的是“该”网站?例如,如果您在这里与网站管理员联系,您会注意到,在Firefox和Chrome(我没有进行全面测试)中,您所描述的添加斜线不会发生。实际上,如果您尝试添加斜杠,实际上似乎会强制删除斜杠。
Su

@Su',我指的是任何站点,状态栏指的是在任何浏览器底部显示的那个,URL栏指的是顶部的地址栏。抱歉,如果让您感到困惑。
问题溢出

2
@Matt Opera还隐藏了?非常愚蠢的IMO 查询字符串(URL中的后面)。
DisgruntledGoat 2012年

Answers:


28

是的,所有主流浏览器在请求裸域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://example.com/directory/。您链接到的文章似乎两者都一样,而且似乎并不是完全正确的IMO。如果您请求http://example.com/directory(不使用斜杠),则浏览器不会附加一个斜杠,是的,大多数服务器将301重定向到http://example.com/directory/(斜杠)-但这取决于服务器;它可能会破坏!例如,在Apache上,这取决于将DirectorySlash指令设置为on


要添加到答案中,每当您链接到主页时,都添加斜杠以节省服务器资源。
Anagio

5
@Anagio我想你不明白答案。您根本不会节省服务器资源,因为没有重定向。带斜线和不带斜线的域是100%相同的。换句话说,绝对没有办法为每个返回不同的内容(可以使用目录URL)。
DisgruntledGoat 2012年

1
@DisgruntledGoat,如果您不使用斜杠而服务器重定向,则在链接中添加斜杠将使服务器不必重新加载到页面。这就是我得到的,把这种斜线谈话休息谷歌有一个伟大的文章就可以了googlewebmastercentral.blogspot.com/2010/04/...
Anagio

5
@Anagio那篇文章是关于目录的斜杠,而这个问题只涉及域上的斜杠。如上述答案所述,它的差异为零,因为到example.comexample.com/两者的链接都需要对服务器的完全相同的请求。
DisgruntledGoat 2012年

3
…因为浏览器会“纠正”此问题。
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.