我们有大量的URL,其中一些包含哈希字符。哈希是不是表示片段,而是URL路径的一部分,因此我们通过 %23
逃脱了哈希,例如
http://example.com/example%231
http://example.com/another-example%232
…
我们的sitemap.xml
列出了这些URL如下:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://example.com/example%231</loc>
</url>
<url>
<loc>http://example.com/another-example%232</loc>
</url>
<!-- and so on … -->
</urlset>
现在,Google搜索控制台报告以下URL的404
错误:
http://example.com/example
http://example.com/another-example
请注意,%23
后的琴弦被剥离了。如果站点地图包含例如,我会理解这种行为。http://example.com/example#1
,但我们有意编码哈希(http://example.com/example%231
(。
有什么我可能会误会的,或者在sitemap.xml
中有任何特殊规则?
Google不希望您以这种方式使用片段。但是,他们仍然将它们视为实际的碎片标识符,例如从搜索结果到Wikipedia文章的多个子标题的直接链接。
因此,Google可能将您的哈希视为片段ID,因此将其从您的URL中剥离,从而获得404秒。
XML站点地图遵循RSC 3986中规定的常规逃脱。在Google对Ajax的!#
URL使用的弃用情况周围有一些历史记录,这可能是有用的背景。