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 網站管理員工具。


本文表達的觀點是客座作者的觀點,並不一定是搜索引擎土地的觀點。 此處列出了工作人員作者。