【问题标题】:Load CSS and JS over HTTPS in Wordpress在 Wordpress 中通过 HTTPS 加载 CSS 和 JS
【发布时间】:2014-07-25 11:12:02
【问题描述】:

我的一个网站在 Wordpress 中。我在网站上设置了 SSL。我希望通过 HTTP 加载整个网站,除了 1 页我们称之为 PAYMENTS。

当我点击菜单 PAYMENTS 时,我如何在 Wordpress 中实现它通过 HTTPS 加载它并通过 HTTPS 加载所有 CSS 和 JS。因为当我在 url 中手动执行操作时:https://www.example.com/payments/ 它在没有任何 CSS 和 JS 的情况下加载,因为由于它在源中通过 HTTP 加载而全部被阻止。

如果我在菜单中单击任何其他项目并返回 HTTP,也希望实现这一点。

【问题讨论】:

    标签: wordpress .htaccess http ssl https


    【解决方案1】:

    您可以通过将其添加到您主题的 functions.php 中,让 WordPress 使用针对 CSS 和 JavaScript 的 Protocol-Agonstic 路径:

    add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2);
    function agnostic_script_loader_src($src, $handle) {
        return preg_replace('/^(http|https):/', '', $src);
    }
    
    add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2);
    function agnostic_style_loader_src($src, $handle) {
        return preg_replace('/^(http|https):/', '', $src);
    }
    

    请注意,Better WordPress Minify 之类的插件不会尊重这一点,这些插件会更改页面中包含的脚本和样式的方式,并且此技术不适用于 IE6(无论如何,这不应该成为问题)。

    【讨论】:

    • 我将它添加到functions.php 并没有发生任何事情,即使我在HTTPS 上也是通过HTTP 加载的。
    • 如果这不起作用并且 WordPress HTTPS 不起作用,听起来您的主题编码不佳,它将所有 Javascript 和 CSS 资源的 URL 硬编码,而不是将它们排入队列就像你在 WordPress 中应该做的那样。
    【解决方案2】:

    对 CSS 和 JS 使用不可知的路径,例如当你打电话给他们时,// 而不是http://。此外,一个名为 WordPress HTTPS 的出色插件可以为您执行仅一页的 https:

    【讨论】:

    • 在哪里将 http:// 更改为 // ?我可以编辑 php 文件,我只是不熟悉 Wordpress 文件结构。
    • 视情况而定 - 检查 header.php 是否有指向 css 和 js 文件的链接,并检查 functions.php 以查看是否有任何脚本或样式入队。通过在加载 https 页面时查看源代码并查看哪些调用违反了安全性,开始跟踪不安全的请求。不过,请先尝试使用该插件 - 它应该处理内置的 WordPress 脚本和 css 调用。
    • 插件没用,当我通过HTTPS查看源码时,所有的js和css等元素都是通过HTTP加载的,不知道该怎么办...
    • 您是否确保将页面本身设置为通过 https 加载?当您编辑该页面时,右侧有一个复选框。
    • 啊,知道这一点很重要。不幸的是,我对您的设置和 Django 了解不多,无法提供帮助 :( - 尝试在您的问题中添加更多设置信息(例如,这是一个 Django 应用程序)。
    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 2020-11-08
    • 2015-10-15
    • 2018-01-09
    • 2016-06-10
    • 2018-07-13
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多