XML 站点地图和 SEO:您需要了解的内容

已发表: 2023-08-16

XML 站点地图在 6 月份刚刚满 18 岁,为了纪念其正式进入成年期,我将详细介绍 XML 站点地图的工作原理、如何构建站点地图,以及为什么 XML 站点地图提供大量 SEO 优势。

什么是 XML 站点地图?

简而言之,XML 站点地图是一种 XML 格式的协议,它告诉搜索引擎可抓取的网站上的 URL。

XML 站点地图旨在共享有关每个 URL 的信息,例如:

  • 上次更新是什么时候。
  • 多久改变一次。
  • 它相对于您网站上的其他 URL 有多重要。

如果某些 URL 被隔离,XML 站点地图允许搜索引擎更有效地抓取您的网站。

如果您是 SEO 专业人士,您可能已经使用 Yoast WordPress 插件中内置的 XML 站点地图。 但您可能会错过很多额外的内容。

如何构建动态 XML 站点地图

如果您使用 WordPress,请利用 Yoast 和 RankMath 等 SEO 插件来生成动态 XML 站点地图。

如果您不使用 WordPress,请按照以下步骤构建动态 XML 站点地图。

了解您的导航结构

将网站上所有 URL 的列表放在一起,并将它们分组以与导航结构和内容分组保持一致。

与您的开发团队合作

与您的开发团队共享分组的 URL 列表,以获得他们使用 Python、PHP 或 JavaScript 创建动态 XML 站点地图的帮助。

以下是如何使用 Python 编写动态 XML 站点地图的示例:

 import xml.etree.ElementTree as ET import datetime # List of URLs (replace these with your actual URLs) urls = [    "https://www.example.com/page1",    "https://www.example.com/page2",    "https://www.example.com/page3",    # Add more URLs here ] # Create the root element urlset = ET.Element("urlset") urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9") # Loop through URLs and create URL entries for url in urls:    url_elem = ET.SubElement(urlset, "url")    loc_elem = ET.SubElement(url_elem, "loc")    loc_elem.text = url    lastmod_elem = ET.SubElement(url_elem, "lastmod")    lastmod_elem.text = datetime.datetime.now().isoformat()    changefreq_elem = ET.SubElement(url_elem, "changefreq")    changefreq_elem.text = "daily"  # You can set this to the desired frequency    priority_elem = ET.SubElement(url_elem, "priority")    priority_elem.text = "0.5"  # You can set this to a value between 0 and 1 # Create the XML tree tree = ET.ElementTree(urlset) # Save the XML to a file tree.write("sitemap.xml", encoding="utf-8", xml_declaration=True)

在与开发人员合作时,我结合使用 Flask 和 Python 创建了一个真正动态的 XML 站点地图,该站点地图会随着网站内容的变化而变化。

如果我们可以使用像get_dynamic_urls()这样的函数根据网站内容定义动态站点地图路由,我们应该能够检索所有 URL。

 @app.route('/sitemap.xml', methods=['GET']) def sitemap():    urls = get_dynamic_urls()  # Replace with your dynamic URL retrieval logic    urlset = ET.Element("urlset")    urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")    for url in urls:        url_elem = ET.SubElement(urlset, "url")        loc_elem = ET.SubElement(url_elem, "loc")        loc_elem.text = url        lastmod_elem = ET.SubElement(url_elem, "lastmod")        lastmod_elem.text = datetime.datetime.now().isoformat()        changefreq_elem = ET.SubElement(url_elem, "changefreq")        changefreq_elem.text = "daily"        priority_elem = ET.SubElement(url_elem, "priority")        priority_elem.text = "0.5"    xml_content = ET.tostring(urlset, encoding="utf-8")    return xml_content, {'Content-Type': 'application/xml'}

如果您要跨多个域资源共享代码,请确保文件在您的 HTML 页面上编码正确。

例如,您的 CSS 和 JavaScript 文件应使用<link><script>标记进行链接。

在跨不同域共享代码之前,您需要创建一个集中式服务器来托管共享的 XML 站点地图规则。

您将与开发人员一起进行动态 XML 站点地图的多个阶段,直到所有规则都得到确认。

不要忘记检查动态 URL 是否确实被检索并集成到您的站点地图逻辑中。

上传到您的服务器

压缩 XML 站点地图后,将动态 XML 站点地图上传到网站的根目录。

提交给搜索引擎 

通过 Google Search Console 和 Bing 网站管理员工具提交 XML 站点地图,让搜索引擎了解您的 XML 站点地图。

持续维护

XML 站点地图不仅仅是“设置后就忘记它”的 SEO 策略。 当您的网站发生变化时,更新 XML 站点地图至关重要。

构建 XML 站点地图时要记住的 15 个提示

1. XML站点地图不是排名因素

当在 X(以前的 Twitter)上被问到使用 XML 站点地图是否有排名优势时,Google 的 Gary Illyes 回答道:

  • “不,反正也不直接。”
Gary Illyes 谈 XML 站点地图

2. Google 无需站点地图即可找到您的页面

Google 搜索倡导者 Daniel Waisberg 在 Google Search Console 培训视频中分享道,如果网站很小且链接正确,则不需要站点地图。

然而,他接着说,如果出现以下情况,站点地图可能特别有用:

  • 该网站真的很大。
  • 该网站的页面是孤立的。
  • 该网站是新的或变化很快。
Daniel Waisberg - 当站点地图有帮助时

另外,值得注意的是,Google 的 John Muller 在 X(以前的 Twitter)上表示,拥有 XML 站点地图是“任何严肃网站的最低基线”。

3. Google 在重新处理之前检查您的 XML 站点地图是否已更改

Illyes 证实,在浪费资源再次解析和处理文件之前,Google 会检查您的 XML 站点地图是否已更改。

他在 SEO Office Hours 中表示。

  • “一旦你更改了站点地图中的某些内容,无论是 URL 元素还是最后一个 mod,站点地图都会被再次解析并通常会重新处理。 这并不意味着 URL 一定会被抓取,当然它们仍然像任何其他 URL 一样接受质量评估。 还值得一提的是,如果您从站点地图中删除某个网址,因为它可能不再存在,但这并不意味着它会自动从索引中删除,甚至不会优先进行爬行,以便可以更快地删除它。”

4. XML 站点地图可以更快地为您的新内容建立索引

Mueller 证实,告诉 Google 您的 XML 站点地图已更新可以帮助您更快地将新内容编入索引。

他分享道:

  • “对站点地图执行 Ping 操作与仅在 robots.txt 中提供站点地图略有不同 — 通过 Ping,您可以主动标记站点地图文件中的更改。 如果您热衷于快速将新内容编入索引,那么这是一个很好的做法。”

5. XML 站点地图必须采用 UTF-8 编码

如果您的 XML 站点地图未使用 UTF-8,搜索引擎将无法读取它。

6. 将文件大小保持在 50 MB(未压缩)或 50,000 个 URL 以下

XML 站点地图有大小限制。 每个站点地图的 URL 数量应控制在 50,000 个以下或 50 MB(未压缩)以下。

如果您的文件较大或 URL 较多,请使用多个 XML 站点地图。

7.你可以有多个XML站点地图

Google 允许您提交多个站点地图。 将站点地图分成网站的不同部分来衡量性能可能会很有用。

例如,如果您是一个大型电子商务网站,则可以按产品类型(即女鞋与男鞋)对 XML 站点地图进行细分。

或者,如果您有多种语言,您可能需要与您的 <loc> XML 站点地图相关的 hreflang。

如果您有备用语言,则不计入 50,000 个 URL 的上限。

或者,如果您有大量视频或图像,则可以将 XML 站点地图分为视频 XML 站点地图和图像 XML 站点地图。

拥有多个 XML 站点地图不会带来排名优势。

8. 如果您有多个 XML 站点地图,请记住使用站点地图索引文件

如果大型网站有多个 XML 站点地图,则需要提交站点地图索引文件以一次提交多个站点地图。

9.lastmod标签应该是完美的

<lastmod>标签是 XML 站点地图最重要的部分之一。

例如,我的结构化数据利用了 XML 站点地图的 <lastmod> 日期。

<lastmod>标签还向搜索引擎发出信号,表明您是否刷新了旧内容或推出了新内容。

穆勒证实了这一点,他表示:

  • “……如果您只是更改时间戳页脚,当然,页面在技术上也发生了变化,但应该优先考虑这一点 - 可能不会。”

Bing 甚至对 XML 站点地图中的lastmod标签发表了官方立场,指出:

  • “对于 XML 站点地图,您可以在站点地图中包含的最关键的标签之一是“lastmod”标签。”

10. XML站点地图应该只包含200个全部自我规范化的状态URL

请记住仅保留实时 URL、200 状态、可索引和自我规范化。

如果您继续展示 404 或 301 重定向页面,搜索引擎可能会完全停止抓取您的 XML 站点地图。

穆勒回应了 X(以前称为 Twitter)上的一条评论:

  • “如果 URL 无效,我们将停止获取站点地图文件,但如果您要返回内容或重定向(有点推荐),我们将继续尝试它们。 它不应该引起问题,因为整个站点地图文件只是从站点获取的所有 URL 的一小部分。”

11.搜索引擎可以每天检查你的XML站点地图

Microsoft 的 Fabrice Canel 表示,Microsoft 每天都会检查您的 XML 站点地图。

Mueller 表示,Google 根据频率(也称为<lastmod>标签)检查您的 XML 站点地图。

12. 页面速度间接影响您的 XML 站点地图

我们都知道页面速度对我们的 SEO 工作有多么重要。 但是,性能缓慢的网站如何影响您的 XML 站点地图呢?

Mueller 已确认页面速度不会影响您的 XML 站点地图,他指出:

  • “只要没有超时,就应该没问题。 也许缓存最新版本以防止不必要的服务器负载?”

事实上,我曾在性能缓慢的网站上工作过,当搜索引擎抓取网站时,XML 站点地图不会加载,从而导致排名大幅波动。

如果您的网站无法正确加载,则会对您的 XML 站点地图产生间接影响。

这就是为什么使用 Gzip 压缩来减小文件大小并加快加载时间非常重要。

13. 从 XML 站点地图中删除 <priority> 标记

Illyes 将 XML 站点地图中的<priority>标签比作“一袋噪音”。

因此,如果您依赖搜索引擎根据优先级抓取 XML 站点地图中的 URL,那么您将等待很长时间。

我建议从您的 XML 站点地图中删除此标签。

14. 如果您有导航结构问题,请将 XML 站点地图与 HTML 站点地图配对

人们对于 HTML 站点地图总是有着复杂的感受。

Mueller 认为 HTML 站点地图“永远都不需要”。

他继续:

  • “这些年来我改变了对 HTML 站点地图的看法,它们永远都不应该被需要。 小型和大型网站都应始终具有清晰的导航结构。 如果您觉得需要 HTML 站点地图,请花时间改进站点的架构。 HTML 站点地图与 HTML 加载旋转器位于同一个容器中。”
 <iframe src="https://mastodon.social/@johnmu/109477617298107922/embed" class="mastodon-embed" width="400" allowfullscreen="allowfullscreen"></iframe><script src="https://mastodon.social/embed.js" async="async"></script>

在企业级大型网站上工作时,网站导航结构上通常有多层决策者。 通常,SEO 最佳实践会被考虑在内。

我将 XML 站点地图与 HTML 站点地图配对,直到我对我们的网站导航和内部链接层次结构充满信心。

15. 不要忘记将所有 XML 站点地图包含在 robots.txt 文件中

不要忘记将 XML 站点地图(全部)作为链接包含在 robots.txt 文件中。

这是一个例子:

将所有 XML 站点地图包含在 robots.txt 文件中

不必担心这些内容应该放在 robots.txt 文件中的哪个位置。 这不会影响 robots.txt 文件中 XML 站点地图的位置。

穆勒证实了这一点:

XML 站点地图是搜索引擎网站的蓝图

无论您是要启动新网页还是只是向重复页面添加规范标签,您都应该全天候 (24/7) 更新您的 XML 站点地图。

但请谨慎行事。

虽然您不应该偏执,但您的 XML 站点地图是您的搜索引擎房屋的蓝图。

因此,不要忘记将 XML 站点地图提交到 Google Search Console 和 Bing 网站管理员工具。


本文表达的观点是客座作者的观点,并不一定是搜索引擎土地的观点。 此处列出了工作人员作者。