& 在站点地图链接中,它们正确吗?


17

一个简单的问题,我只是想确保。

Google网站地图生成器生成了一个sitemap.txt文件,其中包含如下所示的链接:

http://www.domain.com/category.htm?name=some-name&cat_id=8

&在这些链接中使用代替,是否正确,&或者这只是站点地图生成器的错误?

谢谢。

Answers:


11

那是对的。它是与号(&)的HTML实体,并且是在正确编码的URL中其正确的字符表示。“&”号&和以及<>是XML和HTML中的特殊字符,需要使用其特殊字符实体进行显示。


您确定所有“&”号都必须转义吗?我认为这仅适用于查询字符串中的那些分隔参数。我总是逃脱自己用百分比编码(在文件或文件夹的名称,或在参数&符号%26):如http://foo/a%26r.php?foo=1&amp;genre=r%26b
冒犯君主

我不确定百分比编码是否有效,因此无法确定。
约翰·孔德

@Lèse-因为它是XML文档,所以必须转义它,除非您使用CDATA节点(只是注意到bdadam说了同样的话,但比我早得多)
Mark Henderson 2010年

>不必严格要求使用XML编码实体。
MrWhite

6

您的站点地图文件必须是UTF-8编码的(保存文件时通常可以这样做)。与所有XML文件一样,任何数据值(包括URL)都必须对字符使用实体转义码。

这可能会有所帮助,http://sitemaps.org/protocol.php


不幸的是,该链接现在已失效。
mtness


2

如果站点地图的URL中带有&字符,则Google拒绝将其视为损坏。当您将&替换为&amp;时,它会接受它。

但是:如果您稍后在Google网站管理员工具中查看抓取错误列表,它将报告站点地图文件的URL为损坏,因为其中包含&amp; 代替 &。

因此,正确的解决方案是更改URL,使其不包含&。或将此错误报告给Google。


1

URL编码和XML实体编码不是一回事。您需要URL编码来替换URL中的特殊字符,例如&,只能用于分隔查询参数。XML实体编码用于在XML(也包括XHTML)中编码特殊字符。这意味着,如果您在XML(或XHTML)文件中有一个URL,并且此URL包含一些&字符,则必须将其实体编码为&amp;。因此,在sitemap.xml中,您将拥有与Marco Demaio的问题类似的URL。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.