2012-07-20 52 views
3

我知道网址应区分大小写,例如URL中的UTF8组件,是否应区分大小写?

http://www.example.com/test.php 


http://www.example.com/TEST.php 

应该是两件事。

但是,如果UTF-8也是区分大小写的,例如?

http://zh.wikipedia.org/wiki/%E8%A7%82%E6%B5%8B%E5%A4%A9%E6%96%87%E5%AD%A6 

VS

http://zh.wikipedia.org/wiki/%e8%a7%82%e6%b5%8b%e5%a4%a9%e6%96%87%e5%ad%a6 

他们应该是相等?

我问的原因是:虽然我的网站都使用小写字母,但Googlebot仍然使用URL的大写字母。

+0

FWIW,bit.ly他们缩短了相同的URL http://bit.ly/QeUCWg,所以他们显然它首先解码。 – Thilo 2012-07-20 03:55:39

回答

1

对于这个问题,我不能说100%的权威,但如果你停下来考虑如何将URL存储在搜索索引,网址表或任何Google使用的无数数据存储中,我无法想象这些URL不会以某种方式被标准化。

任何类型的规范化应该将URL解码为一个字符串,所以应该没有区别。如果Google使用%编码存储网址,我会感到惊讶。他们可以用UTF-8存储文本;百分号在那里让事情对人类可见。

谷歌“使用”的大写变体只是为了显示和报告的目的,我猜想。我认为URL编码根本不存储。

+0

我不同意。网址没有以任何特定的方式进行编码,因此它们可以是UTF-8,latin-1或其他任何内容。解码这些可能会导致相同的'字符串',但它们不是相同的URL。由于网址没有给出具体的字节定义,它们实际上是不同的。然而,OP给出的例子是相同的:) – Evert 2012-07-23 18:31:56

0

由于它们应该是十六进制字符对,所以编码字符的小写和大写变体应该被认为是等效的(例如,0xab和0xAB是相同的值)。

0

说到Googlebot,很难预测它从哪里获取信息。即使您只使用小写字母链接到它,并且它的XML站点地图中使用了小写字母,也可能有人在那里以大写形式链接到您的网站。

您确定Google将URL视为区分大小写。这就是为什么他们支持rel=canonical specification。如果您正确使用rel = canonical规范,我不担心Googlebot会访问全部大写的网址。当他们处理页面进行索引时,它会将所有页面“值”合并到规范URL中。

如果您想要更明确地说明它,您可以301将所有大小写请求重定向到小写版本。因此,Googlebot会将301s更改为小写版本。

还要注意,即使您有301和rel = canonical ...您也会看到Googlebot将继续抓取全部大写的网址。即使这些URL是404或410,也会发生这种情况。基本上Googlebot永远不会忘记一个URL,并且它会不时地尝试它知道存在的旧URL,或者仍然指向它的链接......即使它们'重新岁月,早已逝去。