在 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/