我的主页可能被链接为:

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="/" /> (relative)
<link rel="canonical" href="http://example.com/" /> (trailing slash)
<link rel="canonical" href="http://example.com" /> (no trailing slash)


应使用哪个?我只打一巴掌,但搞砸规范似乎是一件可怕的事情,所以我想先仔细检查一下。

评论

另请参阅:带有或不带有斜杠的主页链接之间有什么区别?

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

#1 楼

根据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具有以下功能:空路径应归一化为“ /”路径。同样,它的“:port”(端口为空或方案的默认值)等效于省略端口及其“:”定界符的端口,因此应通过基于方案的规范化将其删除。例如,上面的第二个URI是“ http”方案的常规形式。“

技术上,RFC 3986第6.2.3节中描述的规范化对于例如仅索引URL的实现是可选的RFC 2616强制要求希望实际发送HTTP请求的客户端,但是,鉴于该标准允许这种标准化,并且考虑到搜索引擎通常不希望在其索引中故意添加重复项,因此可以合理地确定所有搜索引擎都将所有这些URL规范化为相同。
因此,无论您使用http://www.example.com还是http://www.example.com/,对于浏览器或搜索引擎都没有区别。它们是等效的。

评论


http://www.example.com和http://www.example.com/可能是等效的,但是http://www.example.com/是规范的,因为这是URI必须规范化的地方。所以我会在规范的meta标签中使用它。

–斯蒂芬·奥斯特米勒(Stephen Ostermiller)
13年7月22日在14:15