В настоящее время я пытаюсь заставить W3 Total Cache работать на веб-сайте WordPress и заметил довольно странное поведение при отправке запроса URL-адреса CDN.
Я использую cloudfront cdn и указываю на CNAME (cdn.test.com), указывающий на URL-адрес cloudfront.
Теперь все изображения, css и javascript, которые не являются частью темы, правильно отображаются с помощью URL CDN CNAME.
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
(Могу ли я также добавить, что это также происходит с URL-адресом облачного фронта.)
Но когда дело доходит до css и javascript, которые являются частью темы woo, это выглядит следующим образом.
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 и заменить его пустой строкой.
Это, однако, не сработало, потому что я, вероятно, использовал / вызывал неправильную add_action или add_filter из справочной документации https://support.woothemes.com/hc/en-us/articles/203106877-Canvas-Hook-Filter-Reference и WordPress (я имею в виду wp_head или wp_footer).
Как вы, возможно, поняли, у меня нет опыта работы с WordPress, и я прошу вас, пожалуйста, помогите объяснить, что происходит или что-то не так с этим, и возможные способы решения этой проблемы.
Спасибо за вашу помощь.
Наконец, проследить и исправить эту проблему с помощью этого кода:
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;
}
Других решений пока нет …