FORCE_SSL_ADMIN仅适用于管理区域

时间:2015-12-15 06:43:42

标签: wordpress

我有一个wordpress网站 我想只将管理区域更改为https。 我尝试添加define('FORCE_SSL_ADMIN',true);在wp-config.php中,它正在更改站点,管理区域正在更改为https 任何想法?

2 个答案:

答案 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]

希望这对你有用。