如何解决wordpress启用ssl后css丢失
问题描述
部署WEB项目后,开启了强制HTTPS,产生如下错误:
Mixed Content: The page at 'XXX' was loaded over HTTPS, but requested an insecure stylesheet 'XXXXXXX'. This request has been blocked; the content must be served over HTTPS.
问题分析
报错的原因就是当前页面是https协议加载的,但是这个页面发起了一个http的ajax请求,这种做法是非法的。HTTPS页面里动态的引入HTTP资源,比如引入一个js文件,会被直接block掉的.在HTTPS页面里通过AJAX的方式请求HTTP资源,也会被直接block掉的。
解决办法
可以在相应的页面的里加上这句代码,意思是自动将http的不安全请求升级为https
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
找到wordpress安装目录/wp-content/themes/你的主题名
然后一般找到header.php或者head.php进行编辑
在标记下插入
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
编辑后保存文件
什么是Mixed Content?
Mixed Content(混合内容)出现于如下场景:HTML页面是通过HTTPS加载的,但是其他资源文件(如图片,视频,样式表文件,脚本)是使用HTTP方式加载的。之所以称为混合内容,是因为在一个网页中同时使用了HTTP和HTTPS,而最初的请求方式为 HTTPS。
现代浏览器可能会阻止此类内容,或者显示关于此类内容的警告,提醒用户此页面包含不安全的内容。阻止混合内容的浏览器可能会首先尝试将该内容的连接从HTTP “升级”到HTTPS。
WordPress Mixed Content混合内容警告不会阻止您的网站在页面上显示内容。但是,您需要在看到警告后立即解决它,因为它会对您网站的 SEO 排名产生负面影响。
使用 Elementor 页面构建器
Elementor 插件使您能够使用其拖放功能构建 WordPress 网站。但是,它还具有一项功能,可让您查找和替换网站上的不安全链接。
如果您已经安装了 Elementor,则最好使用此选项。如果没有,请使用Better Search Replace插件。
在您的仪表板中,转到Elementor > 工具,然后单击替换 URL选项卡。
现在,在旧 URL 文本框中使用 HTTP 格式输入您的网站。然后在新的 URL 文本框中输入您网站的安全 HTTPS 版本。
然后,点击Replace URL
如果使用上述任何插件修复了 WordPress 网站上的混合内容警告,那就太好了。但是,如果您仍然看到它们,则可能是硬编码的脚本/图像是原因。为此,您需要手动替换主题文件上的链接。
手动替换 HTTP 文件
有时,当您从外部链接加载脚本时,使用上述插件中的查找和替换功能不会替换脚本 URL。在这种情况下,您可以手动替换主题文件中的不安全链接。
首先,转到外观>主题编辑器并选择标题模板。
现在,键入 CTRL+F 打开搜索框并将导致混合内容警告的链接粘贴到您的网站上。
找到代码行后,将其替换为安全版本的链接(即将 http:// 更改为 https://)。
此外,如果您使用绝对路径链接到网站上的图像或样式表,您可以修改链接以使用相对路径。
例如,如果您的图像具有以下路径“ http://yoursite.com/images/logo.png ”,则可以将其替换为“ /images/logo.png ”
完成后,单击更新文件。