我有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();
}
}