php - 更改 Drupal 7 编译的 css 和 js 包括使用 https 而不是 http

标签 php html css drupal drupal-7

在 Drupal 7 中,一起编译然后添加到 header 中的 css 和 javascript 文件以“http://www.example.com/sites/all/css”的形式出现。 ' 我需要它以 ' https://www.example.com/sites/all/css 的形式出现'.

我已经能够通过将 settings.php 中的 baseUrl 更改为使用 https 来实现此目的,但随后它会关闭我们的网站。我们使用 Drupal 作为我们的 CMS,使用另一个框架作为我们的 LMS。因此,当站点从我们的 LMS 加载 Drupal baseUrl 时,该地址不起作用。

例子:

如果我设置 baseUrl = ' https://www.example.com/cms ' 然后 css 正确加载为 'https://www.example.com/cms/sites/all/css ' 但随后 Drupal 管理站点无法加载 css,因为那里的正确链接实际上是 'https://www.example.com/drupal/sites/all/css '

如果我将 baseUrl 换成 = ' https://www.example.com/drupal,同样的问题也会发生'.这样 css 就不会在我们的前端加载,但会在 Drupal 管理端正常工作。

我想知道是否有一种方法可以做一个通用的通配符 baseUrl,它只是说使用 https like baseUrl = 'https://%' 或者每次都在地址栏中拉出当前 url 以查看生成的内容网址应该是这样的。

我知道这很含糊,但我不知道在哪里/怎么问。

最佳答案

我不太了解您使用多个子目录(/、/drupal、/cms)的站点结构,但您可以做的是重写资源 URL 并删除协议(protocol)。

在自定义模块中,实现 YOUR_MODULE_process_html Hook 并从 CSS 和 JS 包含中删除所有协议(protocol)。

http://www.example.com/css/... 将转换为 //www.example.com/css/...

function YOUR_MODULE_process_html(&$vars)
{
    foreach (array('head', 'styles', 'scripts') as $replace) {
        if (!isset($vars[$replace])) {
            continue;
        }

        $vars[$replace] = preg_replace('/(src|href|@import )(url\(|=)(")http(s?):/', '$1$2$3', $vars[$replace]);
    }
}

关于php - 更改 Drupal 7 编译的 css 和 js 包括使用 https 而不是 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202449/

相关文章:

javascript - iFrame 元素未在容器内调整大小的问题

php - 使用 xajax(和 MooTools?)自动刷新

html - 修复我的 'Responsive' 设计

html - 如何使图像粘在div的底部

jquery - 在移动 Bootstrap 上查看时如何向导航栏添加侧栏

php - 无法使用 PHP 将数据更新到 MySQL

php - 从 MySQL 数据库中选择随机问题; "correct answer"搞砸了

php - 在 mysql_fetch_array 数组上使用 urldecode

javascript - jQuery - 调整图像大小以适应 div

jquery - 在 jquery 中添加 span 标签不显示