我有一个wordpress网站 我想只将管理区域更改为https。 我尝试添加define('FORCE_SSL_ADMIN',true);在wp-config.php中,它正在更改站点,管理区域正在更改为https 任何想法?
答案 0 :(得分:1)
该常量用于在输入wp-admin
时将连接传输到HTTPS,但在离开 wp-admin
时,它不用于将连接传输到纯HTTP。这里的问题是您保留HTTPS wp-admin
并最终使用HTTPS前端。
您可以使用服务器重写指令或PHP header
重定向来切换协议。 Apache重写的示例(未测试):
<IfModule mod_rewrite.c>
RewriteEngine On
# Are we on HTTPS?
RewriteCond %{HTTPS} on
# Are we _not_ on wp-admin or login?
RewriteCond %{REQUEST_URI} !(/wp-admin|/wp-login)
# Simple redirect to your domain and the requested URL.
RewriteRule ^(.*)$ http://www.yourdomain.abc/$1 [L,R=301]
</IfModule>
使用wp_redirect
的示例(未测试):
add_action('template_redirect', function () {
global $pagenow;
// Not a HTTPS connection.
if ($_SERVER['HTTPS'] !== 'on') {
return;
}
// We are either in wp-admin or on login.
if (is_admin() || strpos($pagenow, 'wp-login') !== false) {
return;
}
// Grab the current request URL.
$requestUri = $_SERVER['REQUEST_URI'];
// Get non-HTTPS WP url.
$newUrl = str_replace('https://', 'http://', home_url($requestUri));
wp_redirect($newUrl);
exit;
});
答案 1 :(得分:0)
你可以通过修改.htaccess文件
来做到这一点在htaccess文件
的顶部添加此代码 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\ HTTP/ [NC]
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^/?(wp-admin/|wp-login\.php) https://example.com%{REQUEST_URI}%{QUERY_STRING} [R=301,QSA,L]
希望这对你有用。