3

我们有一大组 URL,其中一些包含哈希字符。hash并不是表示一个片段,而是 URL 路径的一部分,所以我们通过 转义 hash %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 Search Console 会报告404以下 URL 的错误:

http://example.com/example
http://example.com/another-example

请注意,%23被剥离后的字符串。如果站点地图包含 eg ,我会理解这种行为,http://example.com/example#1但我们有意对哈希 ( http://example.com/example%231) 进行编码。

有什么我可能误解的地方,还是有什么特殊的规矩可以在里面逃跑sitemap.xml

4

1 回答 1

1

Google不希望您以这种方式使用片段。然而,他们仍然将它们视为实际的片段标识符,例如从搜索结果直接链接到 Wikipedia 文章的多个子标题。

因此,Google 可能会将您的哈希解释为片段 ID,因此将它们从您的 URL 中剥离,从而获得 404。

XML 站点地图遵循RSC 3986中规定的常规转义。有一些关于Google 不推荐使用!#Ajax 的 URL 的历史可能是有用的背景。

于 2018-04-03T11:02:24.827 回答