代码之家  ›  专栏  ›  技术社区  ›  Thierry Roy

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

  •  1
  • Thierry Roy  · 技术社区  · 17 年前

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

    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
    

    将提供相同的页面。我认为谷歌会用它的普通索引和网站地图来捕获URL。不幸的是,谷歌倾向于降低那些有重复URL指向同一页面的网站的页面排名。

    4 回复  |  直到 8 年前
        1
  •  6
  •   bobince    17 年前

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

    因此,避开URL的UTF-8编码是最安全的。然后,该链接将在全球范围内工作,并应在所有现代浏览器中以Unicode字符的形式呈现给用户。

    <loc>http://www.example.com/bl%C3%A9%C3%A8%C3%A0%C3%BB.html</loc>
    
        2
  •  3
  •   Community Mohan Dere    4 年前

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

    URL应该是RFC中指定的US-ASCII的子集 1738 . 我不相信你的例子:

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

        3
  •  0
  •   Cal Jacobson    17 年前

    必须 是UTF-8编码的。如果URL是正确的,并且在您的站点上使用,则“是”将其包含在您的站点地图中。

        4
  •  0
  •   Chris Nava    17 年前

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

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