在WordPress 5.7將支持一鍵從http切換到https一文中,我們提到了這個(gè)功能,今天將詳細(xì)介紹。WordPress 5.7將具有許多增強(qiáng)功能,可簡化從HTTP到HTTPS的網(wǎng)站遷移。作為為用戶提供更準(zhǔn)確建議的基礎(chǔ),WordPress將能夠檢測當(dāng)前環(huán)境是否已經(jīng)支持HTTPS。如果是這種情況,它將在“站點(diǎn)運(yùn)行狀況”的“ HTTPS狀態(tài)”部分中提供一個(gè)號召性用語按鈕,單擊該按鈕即可將站點(diǎn)從HTTP切換到HTTPS。
“站點(diǎn)運(yùn)行狀況”部分中的總體指南已得到改進(jìn),現(xiàn)在允許托管服務(wù)提供商提供自定義URL以及說明或一鍵式更新。
檢測HTTPS的狀態(tài)和環(huán)境支持
WordPress 5.7引入了一個(gè)新函數(shù)wp_is_using_https(),如果“站點(diǎn)地址”(home_url())和“ WordPress地址”(site_url())都使用HTTPS作為其方案,該函數(shù)將返回true。本質(zhì)上,將這兩個(gè)URL均更改為HTTPS正式表示該站點(diǎn)正在使用HTTPS。雖然還有其他方法可以在WordPress中部分啟用HTTPS(例如,使用FORCE_SSL_ADMIN常量),但新的檢測機(jī)制著重于在整個(gè)站點(diǎn)(即其前端和后端)中使用HTTPS。
除了提供用于檢查是否正在使用HTTPS的單個(gè)功能之外,還可以調(diào)用新的檢測函數(shù)wp_is_https_supported()來檢查環(huán)境是否正確支持HTTPS。現(xiàn)在,它在站點(diǎn)健康中用于提供更準(zhǔn)確的反饋:如果環(huán)境已經(jīng)支持HTTPS,則用戶可以立即進(jìn)行切換,而無需他們的托管公司參與。在后臺(tái),檢測功能基于新的內(nèi)部選項(xiàng)https_detection_errors,該選項(xiàng)由每天兩次的Cron掛鉤控制,其工作方式如下:
- 它使用啟用的參數(shù)
sslverify向網(wǎng)站的HTTPS版本發(fā)出請求。- 如果請求成功,則已經(jīng)存在有效的SSL證書。
- 在這種情況下,該函數(shù)還會(huì)檢查響應(yīng)中的HTML主體是否實(shí)際上屬于同一WordPress網(wǎng)站;通常是這種情況,但是需要進(jìn)行額外的檢查以適應(yīng)網(wǎng)站和環(huán)境,例如將自定義HTML內(nèi)容放置在URL下。如果HTML正文屬于同一WordPress網(wǎng)站,則可以將環(huán)境切換到HTTPS。否則,WordPress本身無法可靠地完成切換到HTTPS的操作,因?yàn)槠鋬?nèi)容并不完全由它控制。
- 如果請求失敗,它將再次嘗試相同的請求,除非已禁用
sslverify參數(shù)。- 如果該請求成功,則表示存在SSL證書,但無法對其進(jìn)行驗(yàn)證,例如,該證書適用于自簽名證書。
- 如果該請求也失敗,則意味著該站點(diǎn)完全無法通過HTTPS訪問。
- 如果請求成功,則已經(jīng)存在有效的SSL證書。
該wp_is_https_supported()函數(shù)僅查看https_detection_errors由Cron掛鉤控制的選項(xiàng),如果沒有存儲(chǔ)錯(cuò)誤,則該函數(shù)返回true。
一鍵遷移到HTTPS
將WordPress網(wǎng)站從HTTP遷移到HTTPS的一個(gè)主要難題是,需要修復(fù)仍在使用HTTP版本的現(xiàn)有數(shù)據(jù)庫內(nèi)容中的所有硬編碼網(wǎng)址,以避免出現(xiàn)混合內(nèi)容警告。這些網(wǎng)址通常是使用數(shù)據(jù)庫替換插件或WP-CLI遷移的,但是此過程很繁瑣,而且對許多Wo??rdPress管理員而言并不直觀。
WordPress 5.7引入了一項(xiàng)新wp_replace_insecure_home_url()函數(shù),該函數(shù)已與各種內(nèi)容掛鉤,可即時(shí)替換這些不安全的網(wǎng)址。它依賴于另一個(gè)新函數(shù)wp_should_replace_insecure_home_url(),該函數(shù)確定是否需要運(yùn)行網(wǎng)址替換邏輯。自動(dòng)重寫內(nèi)容必須滿足以下所有條件:
- 該網(wǎng)站必須使用HTTPS,通過?
wp_is_using_https()。 https_migration_required必須啟用一個(gè)新的內(nèi)部標(biāo)志選項(xiàng)。當(dāng)“站點(diǎn)地址”和“ WordPress地址”切換到具有現(xiàn)有內(nèi)容的站點(diǎn)上的HTTPS副本時(shí),將自動(dòng)啟用該選項(xiàng)。(換句話說,一個(gè)fresh_site不會(huì)觸發(fā)立即切換到HTTPS的內(nèi)容重寫邏輯。)- “站點(diǎn)地址”和“ WordPress地址”必須使用相同的域名。
通過對不安全URL進(jìn)行內(nèi)容重寫,將站點(diǎn)從HTTP切換到HTTPS所需的唯一更改是將“站點(diǎn)地址”和“ WordPress地址”更新為它們的HTTPS副本。盡管這僅需要更新兩個(gè)文本輸入字段,但仍可以簡化此操作。這就是WordPress 5.7包含另一個(gè)新函數(shù)wp_update_urls_to_https()的原因,該函數(shù)會(huì)相應(yīng)地更新兩個(gè)URL。它還包括一個(gè)額外的檢查,以驗(yàn)證這是否導(dǎo)致WordPress正確識別了該站點(diǎn)使用HTTPS;如果不是,更改將自動(dòng)恢復(fù)以防止出現(xiàn)任何意外問題。
盡管WordPress 5.7引入的一鍵式遷移不支持高級站點(diǎn)配置,例如“站點(diǎn)地址”和“ WordPress地址”不同,但是在常見情況下,它可以大大簡化遷移。此外,高級配置通常由更精通技術(shù)的用戶使用,他們已經(jīng)知道如何遷移到HTTPS。
想要實(shí)際替換數(shù)據(jù)庫中URL的管理員仍然可以這樣做。在這種情況下,建議刪除該https_migration_required選項(xiàng),以避免不必要地運(yùn)行URL重寫邏輯。另外,URL重寫功能可以完全取消,如下所示:
remove_filter( 'the_content', 'wp_replace_insecure_home_url' );
remove_filter( 'the_excerpt', 'wp_replace_insecure_home_url' );
remove_filter( 'widget_text_content', 'wp_replace_insecure_home_url' );
remove_filter( 'wp_get_custom_css', 'wp_replace_insecure_home_url' );
改進(jìn)的站點(diǎn)健康指南
“站點(diǎn)運(yùn)行狀況”中的“ HTTPS狀態(tài)”部分已得到改進(jìn),以指導(dǎo)用戶更多地使用HTTPS。如果環(huán)境已經(jīng)支持HTTPS(通過wp_is_https_supported()),則界面現(xiàn)在將包含一個(gè)按鈕,只需單擊一次即可切換兩個(gè)站點(diǎn)的URL(使用wp_update_urls_to_https())。用戶將需要具有新的update_https?元功能才能執(zhí)行切換;默認(rèn)情況下,此功能將授予同時(shí)具有manage_options和update_core的每個(gè)用戶。


進(jìn)行了各種較小的改進(jìn),以更準(zhǔn)確地描述站點(diǎn)的配置。例如,依賴WP_HOME或WP_SITEURL常量的網(wǎng)站現(xiàn)在會(huì)看到此信息,因?yàn)檫@意味著WordPress無法自動(dòng)更新這些URL。
現(xiàn)在,在“ HTTPS狀態(tài)站點(diǎn)運(yùn)行狀況”總體測試中不使用HTTPS的嚴(yán)重性設(shè)置為“嚴(yán)重”,而在“建議”之前。這意味著不使用HTTPS的站點(diǎn)現(xiàn)在將在“站點(diǎn)運(yùn)行狀況”儀表板小部件中看到“應(yīng)該改進(jìn)”狀態(tài),進(jìn)一步突出顯示了這一點(diǎn)。
提供用于切換到HTTPS的自定義支持URL
為了進(jìn)一步幫助引導(dǎo)WordPress管理員轉(zhuǎn)向使用HTTPS,托管提供商擁有自己的如何切換到HTTPS的支持內(nèi)容,現(xiàn)在可以將這些URL提供給WordPress,以便用戶可以直接從其管理面板獲取該指南。
- 提供自己的專用HTTPS支持內(nèi)容的主機(jī)可以提供URL,該URL可以通過設(shè)置
WP_UPDATE_HTTPS_URL環(huán)境變量或連接到新的wp_update_https_url?過濾器中來獲得。如果未提供此類URL,則默認(rèn)URL鏈接到此HTTPS支持文章。 - 提供實(shí)用程序以自動(dòng)將站點(diǎn)切換到HTTPS的主機(jī)可以通過設(shè)置
WP_DIRECT_UPDATE_HTTPS_URL環(huán)境變量或通過掛鉤到新的wp_direct_update_https_url過濾器來提供URL?。如果未提供此類URL,則默認(rèn)URL會(huì)觸發(fā)上述WordPress一鍵式機(jī)制。
要了解更多詳情,請參閱有關(guān)HTTPS檢測的工單#47577和有關(guān)HTTPS遷移的#51437。
如果你可以訪問YouTube,可以看下視頻演示:https://youtu.be/wRVAY_Lwoco





