如何使用SSL强制Wordpress管理/登录页面


How to force Wordpress admin/login pages with SSL?

我有WordPress在一个子域名,如blog.myy-site.com,不能使用SSL与子域名(https://blog.myy-site.com)

是否有办法强制WordPress管理/登录页面仅SSL URL https://www.my-site.com/blog_dir/wp-admin/(文件夹名称与子域名不相同)

要强制通过SSL进行管理和登录,正确的方法是在wp-config.php中设置FORCE_SSL_ADMIN常数。

define( 'FORCE_SSL_ADMIN', true );

如果WordPress托管在提供SSL的反向代理后面,也可能发生这种情况。

将以下内容粘贴到主题的functions.php中:

define('FORCE_SSL_ADMIN', true);
// a comma-separated list e.g. http,https
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
       $_SERVER['HTTPS']='on';

感谢大家提供的信息

这是一个共享SSL的子域WordPress插件:WordPress HTTPS (SSL)http://wordpress.org/extend/plugins/wordpress-https/

我以前用过这个

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

添加在一个插件或其他地方,它包含在页面中,这将重定向到登录屏幕,如果协议是https,如果用户还没有登录,如果页面还不是登录页面:

add_filter( 'parse_query', 'query_parser' );
function query_parser() {
  if(!is_user_logged_in() && $pagenow != 'wp-login.php' && $_SERVER['HTTPS'] == "on") {
      wp_redirect( home_url() . '/wp-login.php', 302 );
      exit;
  }
}

我也有同样的问题

问题在我的前端登录功能

wp_signon( $login_data, false);

$secure_cookie默认为none

我把它设为true,效果很好。

wp_signon( $login_data, true);
if ( force_ssl_admin() && ! is_ssl() ) {
    if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) {
        wp_safe_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ) );
        exit();
    } else {
        wp_safe_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
        exit();
    }
}