如何对所有请求强制使用SSL?


9

有没有一种方法可以对所有请求强制使用SSL?非常类似于使用admin ssl的选项,但是对于所有请求(包括未登录的请求)。

Answers:



7

一个简单的检查is_ssl()应该做到这一点:

add_action( 'plugins_loaded', 'wpse_2718_force_ssl' );

function wpse_2718_force_ssl()
{
    if ( is_ssl() )
        return;

    wp_redirect(
        'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] 
    );
    exit;
}

但是我也会在.htaccess中执行此操作以捕获图像:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

对于ISS,请参阅堆栈溢出的答案


1

将此规则添加到.htaccess的顶部:

# BEGIN Force SSL
# This should be the first rule before other rules
<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# END Force SSL

这应该在WordPress规则之前。


来自codex.wordpress.org/Administration_Over_SSL的代码几乎相同,除了一些正则表达式字符外,任何一个是否稳定?
prosody-Gab Vereable语境

-1

我已经在所有客户站点上使用了Really Simple SSL,它的工作原理非常好。如果您不想修改代码,只需安装此插件并对其进行配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.