在 WordPress 档案上强制使用 SSL

Force SSL on WordPress archives

我正在使用 WordPress HTTPS (SSL) 插件通过 https 运行 我的网站,并更新了 'settings' 下的 'WordPress Address' 和 'Site Address' 字段菜单来反映这一点。

所有页面和 posts 运行 通过安全连接,但存档(由于自定义 post 类型,我大量使用它)不会。其他更传统的存档类型,例如标签存档,其行为类似。

因为这些是伪页面(并且没有物理位置来调整 WP 管理员中的设置),是否有任何方法可以通过 SSL 强制这些 运行?我错过了编辑 .htaccess 的技巧吗?

非常感谢

你真的不需要使用那个插件。并且,还有其他几项应该检查以修复档案和自定义 Post 类型缺少 SSL。

停用插件,清除缓存,然后在 WordPress Dashboard>>Settings>>General 的两个 URL 设置中将 http 更改为 https 并保存。

然后通过将这些重写规则放在 .htaccess 中的 WordPress 重写块之上,为 non-SSL 传入流量强制使用 SSL 和 www:

RewriteEngine on

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/ [R=301,L]

RewriteCond %{HTTP_HOST} ^example\.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/ [R=301,L]

这将处理所有 WordPress URL,并且还应处理自定义 Post 类型。

但请检查 functions.php 或其他主题文件中的 CPT 函数是否绝对 http URL 并删除 http: 并保留 //,即

//fonts.googleapis.com/css?family=OpenSans

并且喜欢

http://fonts.googleapis.com/css?family=OpenSans

检查您主题的样式表中是否有绝对 URL 以相同的方式 http 和 header 链接,即:

<link href='//fonts.googleapis.com/css?family=OpenSans' rel='stylesheet' type='text/css'>

而且,搜索所有 post/page 内容以将所有 http 链接更改为 https 以获取图像和内部链接是个好主意。将 WordPress 站点 URL 设置更改为 https 是不够的,因为这不会追溯更改 post/page 内容中的所有链接。使用名为 Search RegEx to find/replace links in post/page content. Or, use an SQL find/replace utility called interconnectit.com WordPress Serialized PHP Search Replace Tool 的插件扫描整个数据库。

最后,使用 Firefox (or Firebug) or Chrome or Safari or IE 中的开发人员工具来检查由未通过 SSL 加载的图像、脚本等引起的不安全元素错误。