我在 blog.my-site.com 之类的子域中有 WordPress,并且不能对子域使用 SSL (https://blog.my-site.com)
有没有办法强制 WordPress 管理员/登录页面仅使用 SSL URL https://www.my-site.com/blog_dir/wp-admin/(文件夹名称与子域不同)
我在 blog.my-site.com 之类的子域中有 WordPress,并且不能对子域使用 SSL (https://blog.my-site.com)
有没有办法强制 WordPress 管理员/登录页面仅使用 SSL URL https://www.my-site.com/blog_dir/wp-admin/(文件夹名称与子域不同)
要强制通过 SSL 进行管理和登录,正确的方法是将FORCE_SSL_ADMIN
常量设置为wp-config.php
.
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';
谢谢大家的信息
这是用于子域 WordPress 的共享 SSL 插件: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 默认为无。
我将其设置为 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();
}
}