在URL中逃脱了#,由Google crawler在网站上和处理



我们有大量的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使用的弃用情况周围有一些历史记录,这可能是有用的背景。

最新更新