SEO

解決 Yoast SEO Sitemap.xml 生成與 GSC 無法提交問題

解決 Yoast SEO Sitemap.xml 生成與 GSC 無法提交問題

無法生成 Sitemap 也無法提交 Sitemap

當您的 WordPress 網站使用 Yoast SEO 外掛來產生 Sitemap.xml 時,偶爾可能會遇到一個令人困擾的問題,當你試著查看 Sitemap 並訪問 Sitemap.xml 會轉變成頁面 404 找不到或者變成一個頁面結構的網址錯誤。特別是在使用了多國語系外掛 WPML 的情況下,如果您的永久連結設定為使用文章 ID 而非文章名稱,這個問題更為常見。

解決 Yoast SEO Sitemap.xml 生成與 GSC 無法提交問題

問題原因解析:

在 WPML 和 Yoast SEO 一起使用時,Yoast SEO 外掛可能無法正確生成各語系的 Sitemap。這是因為 Yoast SEO 在多語言環境下的 URL 處理與 WordPress 核心的 URL 生成方式可能不完全相容。

解決 Yoast SEO Sitemap.xml 生成與 GSC 無法提交問題

解決方案:

一個簡單而有效的解決方法是改變 Sitemap 的生成方式。將 Sitemap 的獲取 URL 從標準的 https://您的網站.com/sitemap_index.xml 更改為 https://您的網站.com/?sitemap=1。這種方法可以直接指示 WordPress 以一種不受永久連結設定影響的方式來生成 Sitemap,從而避免了 404 錯誤。

實施步驟:

  1. 登入您的 WordPress 後台。
  2. 轉至「設定」>「永久連結」,並確認您的設定是以文章 ID 為主。
  3. 使用上述提到的 https://您的網站.com/?sitemap=1 作為您的 Sitemap URL。
  4. 提交新的 Sitemap URL 到 Google Search Console,以確保 Google 能夠抓取並索引您的網站。

解決 Yoast SEO Sitemap.xml 生成與 GSC 無法提交問題

此外,確保您的 WPML 和 Yoast SEO 外掛都是最新版本,以利用最新的改進和修復。

解釋用法

通過直接在 URL 中加入 ?sitemap=1,WordPress 將根據當前的外掛和設定動態生成 Sitemap。這種方式不依賴永久連結的結構,因此可以在多種設定下穩定工作。但是當進入第二層,他還是會要求子目錄檔案結構,因此這已經牽涉到 NGINX 的網址 rewrite 功能,他預設看起來的卻是 https://www.example.com/sitemap_index.xml 你可以用 ?sitemap=1 來應對沒有特別 rewrite 的 NGINX 主機,但如果您可以進行 NGINX 這端的主機設定,以下可以解決這問題:

#Yoast SEO Sitemaps
location ~ ([^/]*)sitemap(.*).x(m|s)l$ {

## this rewrites sitemap.xml to /sitemap_index.xml
rewrite ^/sitemap.xml$ /sitemap_index.xml permanent;

## this makes the XML sitemaps work
rewrite ^/([a-z]+)?-?sitemap.xsl$ /index.php?yoast-sitemap-xsl=$1 last;
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;

## The following lines are optional for the premium extensions
## News SEO
rewrite ^/news-sitemap.xml$ /index.php?sitemap=wpseo_news last;

## Local SEO
rewrite ^/locations.kml$ /index.php?sitemap=wpseo_local_kml last;
rewrite ^/geo-sitemap.xml$ /index.php?sitemap=wpseo_local last;

## Video SEO
rewrite ^/video-sitemap.xsl$ /index.php?yoast-sitemap-xsl=video last;
}

試著看看吧!不然就把設定的永久連結結構從預設改成純數值 https://www.example.com/archives/123 這種模式也是一個解決方式。