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

我尝试在URL栏中输入URL的斜线。启用后,我注意到该站点始终返回200 OK状态。此处讨论该问题的文章指出,在末尾使用斜杠可以避免301重定向。但是即使在此页面上,我也看不到任何重定向。

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

评论

是。例如,我认为Opera隐藏了正斜杠(有时还隐藏了使我对dev着迷的协议!)...

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

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

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

#1 楼

是的,所有主流浏览器在请求裸域URL(即首页)时都会对HTTP请求“加斜杠”。为了使HTTP请求有效,实际上这是必需的,对于http://example.com/,它是:

GET / HTTP/1.1
Host: example.com


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


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


您需要查看浏览器发出的HTTP请求到服务器。在“浏览器状态栏”中显示的URL,甚至在地址栏中的URL都可以不同-更加用户友好。尽管请求中存在斜杠,但Google 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
2012年10月14日14:53

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

–心怀不满的山羊
2012年10月15日10:32



@DisgruntledGoat,如果您不使用斜杠而服务器重定向,则在链接中添加斜杠将使服务器不必重新加载到页面。这就是我要讲的内容,请放下这个尖锐的谈话,让Google休息一下。googlewebmastercentral.blogspot.com/2010/04/…

– Anagio
2012年10月15日上午10:45

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

–心怀不满的山羊
2012年10月15日上午10:54

…因为浏览器将对此进行“纠正”。

–未成年
2012年10月15日16:59