我应该在我的站点地图中编码特殊字符吗?

时间:2009-02-10 18:02:11

标签: sitemap

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

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

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

我查看了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的网站的网页排名。

4 个答案:

答案 0 :(得分:4)

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

所以%-escape URL的UTF-8编码是最安全的。该链接将在全球范围内工作,并应在所有现代浏览器中作为Unicode字符呈现给用户。

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

答案 1 :(得分:2)

虽然站点地图必须以UTF-8编码,但这并不意味着其中包含的URL都具有UTF-8的全部可用性。

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

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

根据该引用有效,应该是URL编码/转义。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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