4

我在 blog.my-site.com 之类的子域中有 WordPress,并且不能对子域使用 SSL (https://blog.my-site.com)

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

4

7 回答 7

13

强制通过 SSL 进行管理和登录,正确的方法是将FORCE_SSL_ADMIN常量设置为wp-config.php.

define( 'FORCE_SSL_ADMIN', true );
于 2013-04-08T22:41:13.997 回答
4

如果 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';
于 2016-05-30T15:43:46.637 回答
2

谢谢大家的信息

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

于 2013-04-08T23:12:20.740 回答
1

我以前用过这个

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}
于 2013-04-08T21:57:08.020 回答
0

添加到插件或页面中包含的其他位置,如果协议是 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;
  }
}
于 2013-04-08T21:57:32.787 回答
0

我遇到了同样的问题

问题出在我的前端登录功能中

wp_signon( $login_data, false);

$secure_cookie 默认为无。

我将其设置为 true,并且效果很好。

wp_signon( $login_data, true);
于 2016-12-20T10:20:24.750 回答
0
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();
    }
}
于 2019-05-07T07:16:37.123 回答