URL中的UTF8组件应该区分大小写吗?

3

我理解URL应该是大小写敏感的,例如:

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的大写变体,尽管我的网站所有URL都是小写的。


就此而言,bit.ly将它们缩短为相同的URL http://bit.ly/QeUCWg,因此它们显然首先对其进行解码。 - Thilo
4个回答

1

我不能百分之百确定这个问题,但是如果你停下来想一想URL将如何存储在搜索索引、URL表或Google使用的任何数据存储中,我无法想象URL不会以某种方式被规范化。

任何类型的规范化都应该将URL解码为字符串,因此不应该有任何区别。我会很惊讶如果Google存储带有%编码的URL。他们可以在UTF-8中存储文本;百分号存在是为了让人类能够看到。

我猜想,Google对大写变体的“使用”仅用于显示和报告目的。我认为URL编码根本没有被存储。


我不同意。Url并没有以任何特定方式进行编码,因此它们可以是UTF-8、Latin-1或其他任何编码。尽管对其进行解码可能会得到相同的“字符串”,但它们并不是相同的url。因为url并没有给出字节的具体定义,所以它们实际上是不同的。然而,OP提供的示例是相同的 :) - Evert

0

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

您正确地指出了Google将URL视为区分大小写。这就是为什么他们支持rel = canonical specification的原因。如果您正确使用rel = canonical规范,我不会担心Googlebot正在访问所有大写字母的URL。当他们处理索引页面时,它将把所有页面“值”合并到规范化的URL中。

如果您想更明确地表达,可以将所有大写字母请求重定向到小写版本。因此,Googlebot将遵循301s到小写版本。

还要注意,即使您有301和rel = canonical ...您会发现Googlebot仍将继续爬行所有大写字母的URL。即使这些URL 404或410,这也会发生。基本上,Googlebot永远不会忘记URL,并且不时会尝试旧的URL,它知道曾经存在过,或者仍然有链接指向它...即使它们已经过去多年并且已经不存在了。


0

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接