如何设置REST API以引用CDN上的介质

时间:2017-09-02 作者:jcuk

我将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提供服务。

1 个回复
最合适的回答,由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插件配置为仅提供媒体文件。但它是有效的。。。

您当前的解决方案是什么?

谢谢你,谢谢你

结束

相关推荐

隐藏本地CDN创建的子域

不知道我的问题是否有意义。我创建了一个子域来存储一些静态文件(如图像)。因此,一些图像现在从http://imgs.example.com/imagefilename.png现在,问题是,存储在这个子域下的所有文件http://imgs.example.com/ 是公开可见的,我想隐藏、重定向或显示404。你知道如何做到这一点吗?当前子域中的文件显示--Index of /<一个视频文件。mp4一个图像文件。imgs的Apache服务器。iconicwebteam。com端口80

如何设置REST API以引用CDN上的介质 - 小码农CODE - 行之有效找到问题解决它

如何设置REST API以引用CDN上的介质

时间:2017-09-02 作者:jcuk

我将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提供服务。

1 个回复
最合适的回答,由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插件配置为仅提供媒体文件。但它是有效的。。。

您当前的解决方案是什么?

谢谢你,谢谢你