友人C

多说适配https
前言 今天折腾了一天,终于搞定(后面又发现了一些问题)了全站https。现在有很多免费的SSL证书一键部署,不需...
扫描右侧二维码阅读全文
03
2016/07

多说适配https

ssl-700x180.png

前言

今天折腾了一天,终于搞定(后面又发现了一些问题)了全站https。现在有很多免费的SSL证书一键部署,不需要任何服务器的上传操作即可,所以很简单。

困难的部分是https页面不允许“不安全链接”—即http链接,所以页面所有的http链接都需要更换成https或者删除。其中多说是最坑的。神坑~不知道折腾了多久,才基本搞定!不知道是否还有问题,如有,请提出来,非常感谢:grinning:

好了,下面进入正式的步骤。

申请SSL证书

我使用的是cloudflare,使用北京鹏博士的教育网,访问速度不快,使用请谨慎,但是4G下,速度还是蛮快的...(我也考虑换一个证书提供商)。

  1. 注册账号,把你的域名DNS接管到cloudfare。
  2. 在DNS页面必须启用它的CDN加速
  3. 在Crypto页面,SSL选择flexible(灵活)
    OK!

修改后台永久链接

基本-站点地址 修改成含有https的主战链接!
这时候你再用https,打开你的网站试试(有一定的时间过程,不超过24h),一般情况是可以打开,不会提示无效证书,但是浏览器的锁头是灰色的。

更改所有的https链接

  • 对于博客页面内的http链接,如图片,MP3地址或者其他,要么使用https镜像存储,要么上传到https空间再使用https地址,要么直接删除
    可以使用,Google浏览器的F12检查功能,找出非https的地址。
  • 通过数据库进行替换修改:点击SQL输入指令
    UPDATE typecho_contents SET TEXT = REPLACE(TEXT,'http://ihewro.com','https://ihewro.com') ;

    typecho_contents 是你的数据表名称;
    TEXT 是字段名称
    两个地址 前面是替换前的地址,后面是替换后的地址

多说的问题

多说头像

  1. 多说embed.js本地化
    https://static.duoshuo.com/embed.js
    打开,并保存到本地,命名为“embed.js”。
    使用在线代码格式化工具.格式化一下代码,再次保存。

搜索

            avatarUrl: function(e) {
                return e.avatar_url || rt.data.default_avatar_url
            },

修改成

avatarUrl: function(e) {
    return e.avatar_url.replace("http:", "https:");

},

全部替换成强制使用https的链接。

多说表情

表情分为两个个方面:表情框里的表情以及评论内容里的表情。
1. 表情框里的表情

对于WordPress表情和新浪微博的表情现在都已经支持https的。直接强制使用https链接即可。

  1. 打开本地embed.js
    搜索

    var i = 0 === e.indexOf("微博") ? "http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/"

    修改成

    var i = 0 === e.indexOf("微博") ? "https://img.t.sinajs.cn/t35/style/images/common/face/ext/normal/"

2. 评论内容里的表情

搜索r = s.author;
在下面添加以下代码:

s.message = s.message.replace(/http:\/\/static\.duoshuo\.com\//g, 'https://static.duoshuo.com/');
s.message = s.message.replace("<img src=\"http://img.t.sinajs.cn/", "<img src=\"https://img.t.sinajs.cn/");

第一句话,是把评论内容里面的wordpress表情全部使用https替换(多说本身就是支持的)
第二句话,是把评论内容里面的新浪微博表情强制使用https链接。

多说CSS修改

多说个别页面含有自身的logo,而logo是http链接,必须采用CSS使其不显示!
详细可以看一下我的CSS。

最后一点:
把本地embed.js上传到你的空间(或者其他https空间)把后台的comment.php里面的多说embed.js换成你的embed.js地址。
至此!多说问题已经解决!

typecho文件修改

现在再看看你的博客首页,是不是有一把小绿色锁了?如果没有,请F12检查问题。
但是,你打开后台仍然是http地址,如果你强制使用https访问后台会出现问题。
下面是解决方法:
打开根目录:config.inc.php文件,添加以下常量定义即可解决:
define('__TYPECHO_SECURE__',true);
此时不仅后台地址变成https,而且,首页的博文链接都自动变成https的了!

域名重定向至https

仅提供以下几种方法:

  1. 我在使用的
    rewriteEngine on
    rewriteCond %{http_host} ^ihewro.com.* [OR]
    rewriteRule ^(.*)$ https://ihewro.com/$1 [R=301,L]
  2. 百度的方法(我使用之后,会出现重定向次数过多,有人测试成功)
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]

至此!https,应该就没有问题了!

参考文章

最后修改:2017 年 03 月 13 日 10 : 22 PM
如果觉得我的文章对你有用,请随意赞赏

11 条评论

  1. [...]相关文章:多说适配HTTPS[...]

  2. 尚寂新

    问一下现在看多说的embed.js支持https访问了 网站头像也陆续支持https 请问对此是不是可以减少点什么步骤qwq

    1. 友人C
      @尚寂新

      看了一下好像全部都支持https了,包括头像和表情。就不需要自己用PHP反代。

      已经更新了文章了,没有测试,不确保完全正确哦。。

      如果有问题可以再来找我

      1. 尚寂新
        @友人C

        具体隐藏多说logo的css是什么qwq

        1. 友人C
          @尚寂新

          就是消息提醒框打开后,左下角的位置有一个多说的logo,也是http的资源。找到那个位置,直接display:none 就可以了

          看你的博客,其他的部分似乎还没有弄好呢

  3. CSD

    今天折腾了一天,终于完成了全站 htpps。虽然很累 (因为我初次搞这个,没有经验,其实很简单的!按照下面步骤,一个小之内即可完成)。

    1. Accompany
      @CSD

      我是大半夜敲的!哼哼。多说的游客头像不知道为什么不能显示~~

      1. CSD
        @Accompany

        不知道 方正也没几个游客=w=

        1. Accompany
          @CSD

          有道理[笑cry]

  4. CSD

    666ε=ε=(ノ≧∇≦)ノ

    1. Accompany

发表评论