部署Headless WordPress后WPGraphQL无法获取图片URL如何解决
解决NextJS+Headless WordPress部署到Hostinger VPS后GraphQL无法获取图片URL的问题
1. 修正WordPress站点URL配置
本地开发时站点URL为localhost,部署到VPS后必须更新为线上公网地址:
- 登录WordPress后台,进入设置->常规,将「WordPress地址(URL)」和「站点地址(URL)」修改为你的域名或VPS公网IP(比如
https://your-domain.com)。 - 也可通过WP-CLI快速修改(在VPS服务器终端执行):
wp option update siteurl 'https://your-domain.com' wp option update home 'https://your-domain.com'
2. 验证GraphQL返回的媒体URL
直接在线上环境访问GraphQL端点(https://your-domain.com/graphql),执行以下查询,检查返回的sourceUrl是否为有效线上地址:
query { mediaItems(first:1) { nodes { sourceUrl } } }
如果返回的还是本地URL,说明站点URL未生效或存在缓存。
3. 清理各级缓存
- 清理WordPress缓存:若安装了缓存插件(如LiteSpeed Cache、WP Rocket),在插件后台执行清理;也可用WP-CLI命令:
wp cache flush - 清理服务器端缓存:Hostinger VPS的LiteSpeed服务器自带缓存,可在Hostinger控制面板或服务器终端执行缓存清理;若使用Cloudflare等CDN,也需清理CDN缓存。
4. 检查服务器环境与文件权限
- PHP配置:确认
allow_url_fopen选项开启(可通过phpinfo()查看),该选项关闭会导致媒体URL解析异常。 - 文件权限:修正
wp-content/uploads文件夹权限,确保媒体文件可被正常访问:chmod -R 755 wp-content/uploads/ chmod -R 644 wp-content/uploads/* - MySQL字符集:确认数据库字符集为
utf8mb4,避免URL存储乱码(可通过PhpMyAdmin或MySQL命令行查看)。
5. 排查Hostinger安全限制
- 检查Hostinger VPS防火墙:确认未阻止媒体文件的访问请求,可直接访问图片URL测试是否能正常打开。
- 确认GraphQL端点未被安全插件(如Wordfence)拦截,可临时关闭安全插件测试。
内容的提问来源于stack exchange,提问作者Hanel Rhe
相关产品推荐
相关产品推荐

