为 WordPress 开启 HTTP 和 HTTPS 同时访问

博客在一开始的时候,申请了一个 SSL 证书,那时候单纯只是用来后台使用。

因为那时候多说评论插件还不能支持 HTTPS 协议,所以就没全站用上。

其他页面就强制调回到 HTTP 页面,但是这样又不是太好,有证书都用不上。

前段时间多说插件居然支持 HTTPS 了,所以趁着现在有点时间,就把这个内容搞定

实现的内容是,当访问 http://blog.shiniv.com 和 https://blog.shiniv.com 都能正常访问,不会强调到某一个协议上,当然了,访问后台什么的,还是用 HTTPS 的好。

首先我们先在 wp-config.php 中加入一下内容,以便 WordPress 的链接能适配当前域名

 


$site_url = (isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT']) ? "https://" : "http://") . "blog.shiniv.com";
define('WP_SITEURL', $site_url);
define('WP_HOME', $site_url);
define("WP_CONTENT_URL", $site_url . "/wp-content");

/*  强制使用SSL进行登录和后台管理  */
define('FORCE_SSL_LOGIN', false);
define('FORCE_SSL_ADMIN', true);

然后配置NGINX,我用的 Tengine,配置基本都一样,HTTP的按照以前的配置就好了


ssl                  on;
ssl_certificate      /any path/your crt/blog.shiniv.com.crt;
ssl_certificate_key  /any path/your crt/shiniv.com.key;
ssl_session_timeout  5m;
add_header           Front-End-Https on;

如果网站开启了伪静态的话,也需要将伪静态的内容加入到配置文件中去


if (!-e $request_filename) {
    rewrite . /index.php last;
}
if (!-f $request_filename){
    rewrite (.) /index.php;
}

还有一点需要注意的,如果你在访问HTTP地址的时候,发现除了网站的地址是 HTTP ,其他都是 HTTPS 的话,就要关掉 NGINX 的 HTTPS 配置


fastcgi_param  HTTPS              off;

或者你可以改Wordpress 的代码,具体代码在/wp-include/functions.php中。

查找is_ssl() 函数

替换成以下内容


function is_ssl() {
	if ( isset($_SERVER['HTTPS']) ) {
		if ( 'on' == strtolower($_SERVER['HTTPS']) )
			return true;
		if ( '1' == $_SERVER['HTTPS'] )
			return true;
	} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
		return true;
	}
	return false;
}

保存即可

PS 用了 CDN 的话记得使用支持 HTTPS 协议的 CDN,要不然会出问题的哦

未经允许不得转载:万道一 » 为 WordPress 开启 HTTP 和 HTTPS 同时访问
莫要搞事情哦
你喜欢的人刚好也未喜欢你
张学友刘德华邓紫琪已关注
赞(0) 打赏

评论抢沙发

评论前必须登录!

赏点小费吧客倌

微信扫一扫打赏