【WordPress】解決當網站使用Cloudflare快取時,無法登入後台的bug

目前我這個部落格的網域DNS是使用Cloudflare,因此可以使用它所提供的CDN來為網站加速,讓客倌們瀏覽時可以快一些。但是這麼做又產生了一個問題:就是我要登入後台時,會被擋在登入頁面,不得其門而入。簡單來說就是輸入帳號密碼並送出之後,頁面又會重新整理並回到登入畫面,完全無法進入後台或者兩步驟驗證的下一步。今天這篇文章就是分享我解決這個bug的方法(有兩個,本人親測都有效)。

問題概述

問題症狀就如我在開篇時所描述的,在登入畫面輸入帳號密碼並送出之後,頁面會重新整理並重新出現登入畫面,無法進行下一步的兩步驟驗證(如果有設定兩步驟驗證的話)或者進入後台;即便將瀏覽器快取與Cookie清理,甚至更換瀏覽器也是一樣。

由於我有設定使用Cloudflare快取加速,因此我就想:問題八九不離十就是出在Cloudflare那裏了。以下是我嘗試過的兩個解決方法:

解決方法一:將DNS紀錄中的Proxy選項關掉(即直接停用Cloudflare的CDN加速)

首先我是將Cloudflare上,指向我的部落格的網址的DNS記錄中的Proxy選項關閉,就是讓Cloudflare不再幫我快取部落格的內容。完成之後再將伺服器上的Web Server與PHP服務重開一下,就正常了。

目前這個方法在我這裡的實測是有效的;如果你希望保留Cloudflare的CDN加速的話,那就繼續看下面這一個解決方法吧。

解決方法二:直接在Cloudflare上設定規則,使其不針對WordPress後台做快取

這是我在Google上搜尋”wordpress cloudflare login”時找到的方法,有關內容還是在Cloudflare的官方社群中找到的。原始內容如以下鏈結(由domjh發表。Thank you domjh!):

Unable to login to my wordpress – Getting Started – Cloudflare Community

注意:Cloudflare免費版最多只能設定3條網頁規則,要設定更多的話必須付費購買。

步驟如下:

  1. 登入你的Cloudflare控制台
  2. 選擇網域(如果有多個網域,就選擇發生問題的那一組)
  3. 舊版畫面:點選上方的「規則」
    新版畫面:在左半邊的選單找到並點選「規則」
    最後確定畫面顯示的是「網頁規則」
  4. 點選「建立網頁規則」
  5. 在URL欄位輸入「你的WordPress網站網址/wp-admin」
    下面的規則分別設定如下(就是跟上圖一樣的設定):

    1. 停用網路安全
    2. 快取等級:略過
    3. 停用效能
  6. 最後將其儲存,並確定規則已啟用
  7. 重開網頁伺服器服務(可到使用的虛擬主機的後台、NAS的管理頁面,或者是直接用SSH下指令;看網站是用什麼樣的主機代管)
    我的話是使用SSH下指令,執行sudo systemctl restart nginx(本例使用Nginx)

之後Cloudflare的CDN在快取時,就會跳過後台的內容。目前我這裡測試也是有效的,可以正常登入後台,沒有問題。

總結

起初發現這個問題時,我還以為是WordPress上的哪個外掛又出問題了,結果把可能肇禍的外掛停用之後卻發現問題還在。當時我已經做了最壞的打算,一是直接從備份中把網站還原,二是直接把網站打掉重建。還好當下意識到網站有使用Cloudflare的CDN加速,所以就把調查重點轉到它身上,結果一次就中,果然就是Cloudflare的CDN在鬧烏龍。

最後很幸運發現了這個方法,既可以繼續使用CDN,又不用擔心因此讓後台登入不了。謹將此方法分享出來,提供給遭遇類似問題的朋友們一個參考。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料