处理水景一页网页中 HTTP 与 HTTPS 链接混搭的问题

在刚开始建站的时候并没有考虑使用 SSL 加密连接的问题。现在已经部署了全站 SSL 支持,并打算不久的将来强制全站使用 HTTPS 加密连接。但是可能是因为水景一页网站之前通过非常规的方法切换到了 WordPress 多站点(MultiSite)模式,所以当使用 HTTPS 链接打开网站页面的时候,网页中的一些元素(网址链接、图片和/或文件等)并不一定都是以 HTTPS 链接形式嵌入的。发现这个问题很久了,现在终于忍不住要修理一下了。

这种 HTTP 与 HTTPS 内容混搭的情况还是挺难处理的,因为暂时并不想直接切换到强制全站 HTTPS 的模式,主要是为国内的网络环境考虑(俺的服务器在国外)。页面中有些内容 WordPress 会自动根据用户打开页面时候使用的协议自动选用 HTTP 或 HTTPS 形式,有些却不会自动转换。归一下类的话大致如下,

会自动切换的情况

  1. 文章标题、分类、标签等链接。
  2. 最新文章小工具。

不会自动切换的情况

  1. 自己额外添加的页面元素,如页头、页脚上的链接、文章标题下的作者链接以及文本小工具中的链接。
    • 解决:已经采用去掉 http: 的方式简单处理了,只留个 //cnzhx.net/blog/ 之类的链接地址,前面的协议让浏览器自动补全。
  2. 首页自定义版块中的“更多”链接。
    • 解决:同上。
  3. 首页自定义版块中的“讨论区”文章链接。
    • 解决:因为不能使用没有 http 或 https 开头的省略 RSS 地址链接,所以使用
      $feed =( ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http' ) . '://cnzhx.net/bbs/rss.xml';

      来判断使用 http 还是 https 地址。参考了这里

  4. 最新评论小工具中的作者链接始终为 HTTP 链接;而本站内部的 pingback 文章标题链接却始终为 HTTPS 链接。
    • 解决:因为 recent comments list 小工具是自定义的,采用与下一项目类似的方法处理,直接在生成的 $output 内容里替换。
  5. 文章内容中添加的引用链接。
    • 解决:因为这个问题涉及到所有的子站点,所以通过一个在所有子站点中启用的全局插件来完成。插件代码:
      function cnzhx_ssl_switch($content)
      {
          if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443)
              $content = str_replace('https://cnzhx.net', 'https://cnzhx.net', $content);
          return $content;
      }
      add_filter('the_content','cnzhx_ssl_switch');

      不过这个有个缺陷就是,可能有的时候文章中举例的时候用到了 https://cnzhx.net 这样的字样,也会被替换成 https://cnzhx.net。不过这个影响应该不大,暂时先忽略。实际上因为记不清,又不好搜索,暂时对它也无能为力。如果有朋友遇见这样的问题,还请留言告知。

如果有朋友有好的解决方案,还请留言分享。或者如果发现水景一页网站上有不正常的地方,也请留言提醒一下。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/fix-problem-of-mixed-http-and-https-contents/>。转载请保留此信息及相应链接。

2 条关于 “处理水景一页网页中 HTTP 与 HTTPS 链接混搭的问题” 的评论

  1. WordPress官方插件中心一个插件:
    WordPress HTTPS,再加上仪表盘-设置-WordPress地址/站点地址设置为HTTPS,适用于单站点,多站点未测试。

    • 谢谢!
      刚看了看 WordPress HTTPS,对于我的需求来说这个似乎过于强大了。我只是需要 WP 能够根据用户打开页面时使用的协议调整页面中本站链接的头(http 还是 https)。

雁过留声,人过留名

电子邮件地址不会被公开。 必填项已用*标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南