目前我這個部落格的網域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條網頁規則,要設定更多的話必須付費購買。
步驟如下:
- 登入你的Cloudflare控制台
- 選擇網域(如果有多個網域,就選擇發生問題的那一組)
- 舊版畫面:點選上方的「規則」
新版畫面:在左半邊的選單找到並點選「規則」
最後確定畫面顯示的是「網頁規則」 - 點選「建立網頁規則」
- 在URL欄位輸入「你的WordPress網站網址/wp-admin」
下面的規則分別設定如下(就是跟上圖一樣的設定):- 停用網路安全
- 快取等級:略過
- 停用效能
- 最後將其儲存,並確定規則已啟用
- 重開網頁伺服器服務(可到使用的虛擬主機的後台、NAS的管理頁面,或者是直接用SSH下指令;看網站是用什麼樣的主機代管)
我的話是使用SSH下指令,執行sudo systemctl restart nginx(本例使用Nginx)
之後Cloudflare的CDN在快取時,就會跳過後台的內容。目前我這裡測試也是有效的,可以正常登入後台,沒有問題。
總結
起初發現這個問題時,我還以為是WordPress上的哪個外掛又出問題了,結果把可能肇禍的外掛停用之後卻發現問題還在。當時我已經做了最壞的打算,一是直接從備份中把網站還原,二是直接把網站打掉重建。還好當下意識到網站有使用Cloudflare的CDN加速,所以就把調查重點轉到它身上,結果一次就中,果然就是Cloudflare的CDN在鬧烏龍。
最後很幸運發現了這個方法,既可以繼續使用CDN,又不用擔心因此讓後台登入不了。謹將此方法分享出來,提供給遭遇類似問題的朋友們一個參考。