WordPress 5.7 改进了HTTPS检测和迁移

WordPress 5.7将支持一键从http切换到https一文中,我们提到了这个功能,今天将详细介绍。WordPress 5.7将具有许多增强功能,可简化从HTTP到HTTPS的网站迁移。作为为用户提供更准确建议的基础,WordPress将能够检测当前环境是否已经支持HTTPS。如果是这种情况,它将在“站点运行状况”的“ HTTPS状态”部分中提供一个号召性用语按钮,单击该按钮即可将站点从HTTP切换到HTTPS

“站点运行状况”部分中的总体指南已得到改进,现在允许托管服务提供商提供自定义URL以及说明或一键式更新。

检测HTTPS的状态和环境支持

WordPress 5.7引入了一个新函数wp_is_using_https(),如果“站点地址”(home_url())和“ WordPress地址”(site_url())都使用HTTPS作为其方案,该函数将返回true。本质上,将这两个URL均更改为HTTPS正式表示该站点正在使用HTTPS。虽然还有其他方法可以在WordPress中部分启用HTTPS(例如,使用FORCE_SSL_ADMIN常量),但新的检测机制着重于在整个站点(即其前端和后端)中使用HTTPS。

除了提供用于检查是否正在使用HTTPS的单个功能之外,还可以调用新的检测函数wp_is_https_supported()来检查环境是否正确支持HTTPS。现在,它在站点健康中用于提供更准确的反馈:如果环境已经支持HTTPS,则用户可以立即进行切换,而无需他们的托管公司参与。在后台,检测功能基于新的内部选项https_detection_errors,该选项由每天两次的Cron挂钩控制,其工作方式如下:

  • 它使用启用的参数sslverify向网站的HTTPS版本发出请求。
    • 如果请求成功,则已经存在有效的SSL证书。
      • 在这种情况下,该函数还会检查响应中的HTML主体是否实际上属于同一WordPress网站;通常是这种情况,但是需要进行额外的检查以适应网站和环境,例如将自定义HTML内容放置在URL下。如果HTML正文属于同一WordPress网站,则可以将环境切换到HTTPS。否则,WordPress本身无法可靠地完成切换到HTTPS的操作,因为其内容并不完全由它控制。
    • 如果请求失败,它将再次尝试相同的请求,除非已禁用sslverify参数。
      • 如果该请求成功,则表示存在SSL证书,但无法对其进行验证,例如,该证书适用于自签名证书。
      • 如果该请求也失败,则意味着该站点完全无法通过HTTPS访问。

wp_is_https_supported()函数仅查看https_detection_errors由Cron挂钩控制的选项,如果没有存储错误,则该函数返回true

一键迁移到HTTPS

将WordPress网站从HTTP迁移到HTTPS的一个主要难题是,需要修复仍在使用HTTP版本的现有数据库内容中的所有硬编码网址,以避免出现混合内容警告。这些网址通常是使用数据库替换插件或WP-CLI迁移的,但是此过程很繁琐,而且对许多Wo​​rdPress管理员而言并不直观。

WordPress 5.7引入了一项新wp_replace_insecure_home_url()函数,该函数已与各种内容挂钩,可即时替换这些不安全的网址。它依赖于另一个新函数wp_should_replace_insecure_home_url(),该函数确定是否需要运行网址替换逻辑。自动重写内容必须满足以下所有条件:

  • 该网站必须使用HTTPS,通过 wp_is_using_https()
  • https_migration_required必须启用一个新的内部标志选项。当“站点地址”和“ WordPress地址”切换到具有现有内容的站点上的HTTPS副本时,将自动启用该选项。(换句话说,一个fresh_site不会触发立即切换到HTTPS的内容重写逻辑。)
  • “站点地址”和“ WordPress地址”必须使用相同的域名。

通过对不安全URL进行内容重写,将站点从HTTP切换到HTTPS所需的唯一更改是将“站点地址”和“ WordPress地址”更新为它们的HTTPS副本。尽管这仅需要更新两个文本输入字段,但仍可以简化此操作。这就是WordPress 5.7包含另一个新函数wp_update_urls_to_https()的原因,该函数会相应地更新两个URL。它还包括一个额外的检查,以验证这是否导致WordPress正确识别了该站点使用HTTPS;如果不是,更改将自动恢复以防止出现任何意外问题。

尽管WordPress 5.7引入的一键式迁移不支持高级站点配置,例如“站点地址”和“ WordPress地址”不同,但是在常见情况下,它可以大大简化迁移。此外,高级配置通常由更精通技术的用户使用,他们已经知道如何迁移到HTTPS。

想要实际替换数据库中URL的管理员仍然可以这样做。在这种情况下,建议删除该https_migration_required选项,以避免不必要地运行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' );

改进的站点健康指南

“站点运行状况”中的“ HTTPS状态”部分已得到改进,以指导用户更多地使用HTTPS。如果环境已经支持HTTPS(通过wp_is_https_supported()),则界面现在将包含一个按钮,只需单击一次即可切换两个站点的URL(使用wp_update_urls_to_https())。用户将需要具有新的update_https 元功能才能执行切换;默认情况下,此功能将授予同时具有manage_optionsupdate_core的每个用户。

环境尚不支持HTTPS时的“ HTTPS状态”部分
环境已支持HTTPS时的“ HTTPS状态”部分

进行了各种较小的改进,以更准确地描述站点的配置。例如,依赖WP_HOMEWP_SITEURL常量的网站现在会看到此信息,因为这意味着WordPress无法自动更新这些URL。

现在,在“ HTTPS状态站点运行状况”总体测试中不使用HTTPS的严重性设置为“严重”,而在“建议”之前。这意味着不使用HTTPS的站点现在将在“站点运行状况”仪表板小部件中看到“应该改进”状态,进一步突出显示了这一点。

提供用于切换到HTTPS的自定义支持URL

为了进一步帮助引导WordPress管理员转向使用HTTPS,托管提供商拥有自己的如何切换到HTTPS的支持内容,现在可以将这些URL提供给WordPress,以便用户可以直接从其管理面板获取该指南。

  • 提供自己的专用HTTPS支持内容的主机可以提供URL,该URL可以通过设置WP_UPDATE_HTTPS_URL环境变量或连接到新的wp_update_https_url 过滤器中来获得。如果未提供此类URL,则默认URL链接到此HTTPS支持文章
  • 提供实用程序以自动将站点切换到HTTPS的主机可以通过设置WP_DIRECT_UPDATE_HTTPS_URL环境变量或通过挂钩到新的wp_direct_update_https_url过滤器来提供URL 。如果未提供此类URL,则默认URL会触发上述WordPress一键式机制。

要了解更多详情,请参阅有关HTTPS检测的工单#47577和有关HTTPS迁移的#51437

如果你可以访问YouTube,可以看下视频演示:https://youtu.be/wRVAY_Lwoco

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
欢迎关注我们的微信公众号:WPDAXUE

倡萌

一个文科IT宅男,喜欢折腾WordPress和被它折腾 ^_^

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注