看到一个 Wordpress 网站页面显示混乱,从浏览器调试工具看,是 CSS 样式文件及 JS 文件无法加载。 原因是,网站是 https 的链接,但是页面中引入的 css 和 js 都是 http 加载的,所以无法生效。
从主题的 styles.php 文件看:
wp-content/themes/some_theme/framework/styles.php
虽然通过 is_ssl() 函数判断了是否是 https 加载,但是实际上 enqueue_style 都是使用的 http。
说明 is_ssl() 函数的判断有问题。
现在回到 wordpress 的源码部分:
wp-includes/load.php
function is_ssl() {
if ( isset( $_SERVER['HTTPS'] ) ) {
if ( 'on' === strtolower( $_SERVER['HTTPS'] ) ) {
return true;
}
if ( '1' === (string) $_SERVER['HTTPS'] ) {
return true;
}
} elseif ( isset( $_SERVER['SERVER_PORT'] ) && ( '443' === (string) $_SERVER['SERVER_PORT'] ) ) {
return true;
}
return false;
}
从代码看,估计是 Nginx 的配置问题,没有将变量传递过来。
但是,我不太感动这里的 nginx 配置,因为这个网站是别人的,用宝塔设置的,我不确定宝塔的机制, 所以还是不动 nginx 配置了。
我这里直接把 is_ssl 强制返回 true 得了。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式