【问题标题】:Should I encode special character in my sitemaps?我应该在我的站点地图中编码特殊字符吗?
【发布时间】:2009-02-10 18:02:11
【问题描述】:

我有一些包含特殊字符的 URL。例如:

http://www.example.com/bléèàû.html

如果您在浏览器中键入此 URL,我的网络服务器将显示正确的页面(它可以处理特殊字符)。

我查看了sitemaps specs 并不清楚站点地图文件是否可以包含特殊字符。根据我对协议的理解,如果 URL 工作正常并且服务器提供正确的页面并且 XML 文件是 UTF-8 编码的,那么就可以了。

例如,此条目是有效的站点地图条目:

   <url>
      <loc>http://www.example.com/bléèàû.html</loc>
      <changefreq>weekly</changefreq>
   </url>

任何人都可以证实这一点?

[更新] 我不愿意对特殊字符进行编码的原因是我不想为相同的内容引入重复的 URL。例如

http://www.example.com/bl%C3%A9%C3%A8%C3%A0%C3%BB.html

http://www.example.com/bléèàû.html

将提供相同的页面。我认为 Google 会通过其正常索引和站点地图同时捕获 URL。不幸的是,Google 倾向于降低具有指向同一页面的重复 URL 的网站的页面排名。

【问题讨论】:

    标签: sitemap


    【解决方案1】:

    站点地图规范没有说明。它显示了各种转义形式的 URL 示例,但没有明确说明第一个示例(原始字符)是否允许。它只称它们为“URL”,没有提及“URL”或 RFC 的特定定义,这将阐明它们是指老式 ASCII URI 还是 IRI(可能包含非 ASCII 字符)。

    因此,对 URL 的 UTF-8 编码进行 %-转义是最安全的。然后该链接将在全球范围内有效,并且应该在所有现代浏览器中以 Unicode 字符的形式呈现给用户。

    <loc>http://www.example.com/bl%C3%A9%C3%A8%C3%A0%C3%BB.html</loc>
    

    【讨论】:

      【解决方案2】:

      虽然站点地图确实必须以 UTF-8 编码,但这并不意味着其中包含的 URL 具有可供它们使用的所有 UTF-8。

      URL 应该是 RFC 1738 中指定的 US-ASCII 的子集。我不相信您的示例网址:

      http://www.example.com/bléèàû.html
      

      根据该参考是有效的,应改为 URL 编码/转义。

      【讨论】:

        【解决方案3】:

        规范规定站点地图必须采用 UTF-8 编码。如果 URL 正确并在您的网站上使用,则可以将其包含在您的站点地图中。

        【讨论】:

          【解决方案4】:

          对于那些无法轻松输入特殊字符**的用户,我建议你也接受服务器端最接近的近似值。 (即别名或转发 /bleeau.html 到 /bléèàû.html)

          ** 例如具有有限键盘的手机浏览器和具有不同键盘语言布局的人。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-06-03
            • 2016-02-26
            • 2023-03-09
            • 1970-01-01
            • 1970-01-01
            • 2016-09-23
            • 1970-01-01
            • 2013-05-25
            相关资源
            最近更新 更多