问题描述

有没有办法强制 SSL 的所有请求?很像使用 admin ssl 的选项,但是对于所有请求,包括没有登录的请求。

最佳解决方案

is_ssl()的简单检查应该做到:

add_action( 'plugins_loaded', 'wpse_2718_force_ssl' );

function wpse_2718_force_ssl()
{
    if ( is_ssl() )
        return;

    wp_redirect(
        'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] 
    );
    exit;
}

但是我会在.htaccess 中这样做:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

对于 ISS,请参阅 this answer on Stack Overflow

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。