主页的规范URL和尾部斜杠


14

我的主页可能被链接为:

http://example.com
http://example.com/
http://example.com/?ref=1
http://example.com/index.html
http://example.com/index.html?ref=2

(the same page is served for all those URLs)

我正在考虑定义一个规范的URL,以确保Google不会将这些URL视为不同的页面:

<link rel="canonical" href="/webmasters//" /> (relative)
<link rel="canonical" href="http://example.com/" /> (trailing slash)
<link rel="canonical" href="http://example.com" /> (no trailing slash)

应该使用哪一个?我只是打耳光,/但是搞砸规范性的事情似乎很可怕,所以我想先仔细检查一下。

定义主页的规范URL根本不是个好主意吗?



Answers:


14

根据RFC 2616(HTTP / 1.1)第3.2.2节,URL http://www.example.comhttp://www.example.com/是等效的,并且HTTP客户端必须在将请求发送到服务器之前将前者标准化为后者:

“如果URL中不存在abs_path,则在用作资源的Request-URI时,必须将其指定为“ /”(第5.1.2节)。”

第5.1.2节说:

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

RFC 3986(URI通用语法)6.2.3节“基于方案的规范化”中对此进行了确认,并指出:

“例如,因为“ http”方案使用了权限组件,默认端口为“ 80”,并且定义了一个等效于“ /”的空路径,所以以下四个URI是等效的:

    http://example.com
    http://example.com/
    http://example.com:/
    http://example.com:80/

通常,使用通用语法授权具有空路径的URI应该标准化为路径“ /”。同样地,显式“:端口”,为此,端口为空或用于方案的默认,等效于一个所述端口和它的“:”分隔符被省略掉,因此应该通过基于模式的归一化被移除。例如,上面的第二个URI是“ http”方案的常规形式。

从技术上讲,RFC 3986第6.2.3节中描述的规范化对于例如仅索引URL的实现是可选的,尽管RFC 2616强制要求希望实际发送HTTP请求的客户端。尽管如此,鉴于该标准允许这种标准化,并且鉴于搜索引擎通常不希望在其索引中故意添加重复项,因此可以合理地确定几乎所有搜索引擎都将所有这些URL标准化为相同。

因此,无论您使用http://www.example.com还是,它对浏览器或搜索引擎都没有影响http://www.example.com/。它们是等效的。


5
http://www.example.com并且http://www.example.com/可能是等效的,但是http://www.example.com/规范的,因为这是URI必须规范化的地方。所以我会在规范的meta标签中使用它。
斯蒂芬Ostermiller
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.