網頁伺服器改為 Nginx 需要的規則調整

網站搬家後,如果網站架構曾經改變,像是 Cloudways 使用的是 Apache + Nginx 的混和架構,搬遷到伺服器控制面板後改為單純使用 Nginx 網頁伺服器,根據 WordPress 網站上使用的外掛功能有所不同,可能需要在 Nginx 的規則設定中加入一些網址重寫 (Rewrite) 規則才能讓搜尋引擎、訪客正常存取特定頁面功能。

這篇文章記錄了從 Cloudways 搬遷網站到 ServerAvatar 自行控管的主機上,因為網頁伺服器架構改變而需要進行的調整。

Rank Math SEO 外掛

一般我們使用 SEO 外掛工具,如 Rank Math SEO,會自動幫我們產生 Robots.txt 與網站地圖 (Sitemap) 檔案。

這兩個檔案是讓我們的網站能走向世界,讓別人看見的關鍵。

  • Robots.txt 告訴搜尋引擎或 (守規則的) 爬蟲程式網站內容哪些部份可以被檢索,哪些不行。
  • 網站地圖則是清楚的讓訪客、搜尋引擎知道網站的內容結構為何,有哪些內容是公開給訪客查看的。建立網站地圖可以協助搜尋引擎正確索引網站上更新的文章、頁面、標籤、類別。

在 Nginx 的架構下使用 Rank Math SEO 外掛自動產生 Robots.txt 與網站地圖 (Sitemap) 時,如果沒有設定下述的網址重寫規則,就會發生 Google Search Console 無法擷取 robots.txt 與網站地圖 (Sitemap) 檔案的問題。

網址重寫規則 – Rank Math Robot.txt

將以下規則放到網站的 /conf/nginx/ 目錄下:

# START Nginx Rewrites for Rank Math Robots.txt File
rewrite ^/robots.txt$ /?robots=1 last;
rewrite ^/([^/]+?)-robots([0-9]+)?.txt$ /?robots=$1&robots_n=$2 last;
# END Nginx Rewrites for Rank Math Robots.txt File

網址重寫規則 – Rank Math Sitemaps

將以下規則放到網站的 /conf/nginx/ 目錄下:

# START Nginx Rewrites for Rank Math Sitemaps
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
rewrite ^/([a-z]+)?-sitemap\.xsl$ /index.php?xsl=$1 last;
# END Nginx Rewrites for Rank Math Sitemaps

完成設定之後,就可以到 Google Search Console 重新擷取檔案。

  • Robots.txt
    登入 Google Search Console 後,在這個網域的設定 > 檢索,點擊 robots.txt 開啟報表後,可以要求重新檢索。狀態變為「已擷取」代表擷取成功。
google-search-console-robots
  • 網站地圖
    登入 Google Search Console 後,在這個網域的產生索引 > Sitemap 頁面可以看到已提交 Sitemap 目前的狀態,可以在新增 Sitemap 區塊重新提交網站地圖的網址。狀態變為「成功」代表擷取成功。
google-search-console-sitemaps-status

排除快取網站地圖

如果是文章更新速度較為頻繁的網站,也會需要注意網站地圖 (Sitemap) 的快取問題,為了避免網站地圖檔案被快取造成搜尋引擎無法即時索引新增、更新的文章與頁面,一般也會建議將網站地圖從快取外掛或其他快取功能 (如 Cloudflare) 中排除。

參考文章:
– 「Rank Math XML Sitemaps on NGINX Servers
– 「How To Exclude Rank Math Sitemaps from Caching

Cloudflare 網頁規則

登入 Cloudflare 帳號後,到這個網域下的規則 > 網頁規則頁面,免費方案可以新增 3 個網頁規則。

可以新增一個規則,將網站地圖頁面的快取等級設定為略過。

cloudflare-page-rule-cache-bypass-sitemap

一般來說,Cloudflare 是不會對網站地圖檔案 (XML) 進行快取的,除非有手工設定頁面規則進行全站快取,或是使用 Cloudflare APO (Automatic Platform Optimization) 功能。

Cloudflare – Excluding sitemap from Cache

快取外掛

跟著 Rank Math 文章中的建議,在快取外掛的設定中排除相關頁面的快取。

/(.*)sitemap(.*).xml
/(.*)sitemap.xsl

clearfy-never-cache-urls

這邊我們也踩了一個雷,完成設定後過一陣子才發現 Google Search Console 無法擷取到網站的 Sitemap XML 檔案,顯示「可讀取 Sitemap,但其中含有錯誤」、「剖析錯誤」。

google-search-console-sitemap-error

嘗試直接開啟網站地圖連結就會看到這個錯誤訊息:

rank-math-sitemap-issue-error

這看來也是大家架設網站常見的問題了,直接 Google 錯誤訊息就會知道是因為 Sitemap XML 檔案格式受到影響,可能是在檔案開頭或結尾被加入了空白字元或空白行,大多都是外掛彼此之間產生衝突時造成的影響。

按下滑鼠右鍵 > 檢視網頁原始碼就真相大白了,原來就是我們剛剛新增的排除快取造成的!

rank-math-sitemap-conflict-with-clearfy

相較於 Rank Math 文章中的指引,其他快取外掛應該是使用別的方式來辨識需要被排除快取的頁面,Clearfy 硬生生地加了不符合 XML 語法的註解到頁面中應該不是很好的做法。

所以在進行這個步驟時,也需要特別小心快取外掛是否會對 Sitemap XML 檔案格式進行更動,造成網站地圖無法讀取的問題。

也記得在檢查時,確保網站地圖頁面沒有被快取,以免妨礙了我們查案的進度。(苦笑)

[小技巧]

確保目前正在查看的頁面資源不是來自快取的幾種方法:

  1. 在頁面上按滑鼠右鍵 > 檢查,在開發者工具中啟用「Disable cache」功能後再次載入頁面。(僅在開發者工具開啟時有效)
  2. 強制更新頁面 – 按下 Ctrl + F5 ((Window/Linux) 或 Command + Shift + R (Mac),此動作會清除快取並重新擷取網頁資源。
  3. 使用無痕模式 (Incognito Mode) – 在無痕模式中開啟網頁,無痕模式不會使用先前瀏覽器載入的快取檔案。
  4. 清除瀏覽器快取 – 手工清除瀏覽器快取。
  5. 開啟 Cloudflare 的「開發模式」,可以暫時略過快取。即時查看原始伺服器的變更。
  6. 確保 Cloudflare 上沒有設定快取相關的頁面規則。

ServerAvatar 伺服器控制面板

LTD終生授權方案最後機會

7日內免費試用,可索取優惠碼

The-Plugin-With-the-Best-Video-Experience-440X231

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *