我将Wordpress用作无头服务器,为基于react的web应用程序提供内容,并试图通过CDN获得媒体服务。我已经设置了W3 Total Cache插件,它成功地更改了Wordpress直接提供服务的页面的媒体URL-我可以在浏览器中导航到该页面,并且图像源都来自正确的Cloudfront URL。如果我通过REST API检索相同的页面内容,媒体URL仍然直接引用我的服务器,并且没有被W3 Total Cache插件更改。
我已经上传了一个图片到Wordpress,然后用这个图片设置了一个测试页面。
导航到时获取的页面源http://myserver.com/test (正确)包含:
<p><img src=\\"http:\\/\\/123456789.cloudfront.net\\/wp-content\\/uploads\\/2017\\/09\\/test-300x298.jpg\\" ...
但我打电话时得到的
http://myserver.com/wp-json/wp/v2/pages/17 是:
"content": {
"rendered": "<p><img src=\\"http:\\/\\/myserver.com\\/wp-content\\/uploads\\/2017\\/09\\/test-300x298.jpg\\" ...
我对JSON响应的期望是:
"content": {
"rendered": "<p><img src=\\"http:\\/\\/123456789.cloudfront.net\\/wp-content\\/uploads\\/2017\\/09\\/test-300x298.jpg\\" ...
我有没有办法设置W3 Total Cache插件或REST API本身,以在JSON中重新写入URL的服务器部分,从而为媒体提供CDN URL?
Wordpress版本为4.8.1。这是在AWS弹性豆茎下运行的。媒体存储在S3存储桶中,由CloudFront提供服务。
最合适的回答,由SO网友:nielsG 整理而成
我今天遇到了同样的问题。谢谢你的提问!我正在一个主题中实现一个ReactJS应用程序。因此,我在相应Wordpress挂钩的帮助下将脚本和样式排队。我配置了w3 total cache插件,因此它们可以通过CloudFront CDN获得服务。
到目前为止还不错,但当涉及到通过REST API请求的媒体文件(作为richtext内容属性的一部分)时,我的URL也没有指向CDN。
我使用另一个插件解决了这个问题:https://de.wordpress.org/plugins/amazon-s3-and-cloudfront/
它会重写上载目录中所有文件的URL,也会在REST API请求这些文件时重写。
我有点担心使用两个插件,尽管我将w3 total cache插件配置为仅通过CDN提供主题文件,将amazon cloudfront插件配置为仅提供媒体文件。但它是有效的。。。
您当前的解决方案是什么?
谢谢你,谢谢你