2

我目前正在尝试让 W3 Total Cache 在 wordpress 网站上工作,并注意到发送 CDN url 请求时出现了一些相当奇怪的行为。

我正在使用 cloudfront cdn 并将其指向指向 cloudfront url 的 CNAME (cdn.test.com)。

现在所有不属于主题的图像、css 和 javascript 都可以使用 CDN CNAME url 正确呈现。

example: http://cdn.test.com/wp-content/2015/01/image-150X150.jpg
http://cdn.test.com/wp-includes/base/css/style.css
http://cdn.tes.com/wp-includes/base/js/home.js

(我还可以补充一点,这也发生在 cloudfront url 上。)但是当涉及到作为 woo 主题一部分的 css 和 javascript 时,它呈现如下。

http://cdn.test.com/http://example.com/wp-content/themes/test-theme/js/theme.js
http://cdn.test.com/http://example.com/wp-content/themes/test-theme/css/theme.css

我已经与主题开发人员和其他相关人员讨论了这个问题,但他们的结果很少。

我查看了各种选项,例如使用 preg_replace 来匹配奇怪 url 的出现并将其替换为空字符串。

但是,这不起作用,因为我可能使用/调用了参考文档https://support.woothemes.com/hc/en-us/articles/203106877-Canvas-Hook-Filter-Reference中的错误 add_action 或 add_filter 以及wordpress(我的意思是 wp_head 或 wp_footer)。

您可能已经发现我对 wordpress 没有经验,我请您帮助解释这是怎么回事或错误以及我可以解决此问题的可能方法。

谢谢你的帮助。

4

1 回答 1

0

最后,使用此代码跟踪并修复此问题:

add_filter('w3tc_cdn_url', 'fix_host_in_cdn_url',10,3);
function fix_host_in_cdn_url($content) {
  $content = preg_replace("/(\/http?:\/\/[\da-z\.-])/", '', $content);
  return $content;
}
于 2015-04-30T00:18:02.110 回答