You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress运行于Apache环境img标签请求图片404但地址栏访问返回200

问题根因分析

从提供的请求响应日志可以看到,img标签发起的图片请求返回的404响应带WordPress的Link: https://xxx/wp-json/头,说明该请求被Apache重写规则转发到了WordPress内核处理,没有直接返回静态资源;而地址栏请求时Apache直接匹配到了静态文件返回200。核心原因大概率是以下几类:

  • 动态缩略图插件异常:img标签请求的是裁剪后的尺寸缩略图,这类文件通常由WordPress缩略图插件首次访问时动态生成,若插件生成逻辑出错(目录写入权限不足、内存超限、逻辑bug),会直接返回404
  • Apache内容协商配置冲突:若Apache开启了MultiViews(内容协商)功能,会根据请求的Accept头匹配资源,img请求的Accept为image/*类时可能匹配失败,误判文件不存在触发WordPress重写
  • 未公开的重写/安全规则:Apache全局配置、虚拟主机配置或隐藏的安全WAF规则,可能针对Sec-Fetch-Dest: image、带Referer的请求做了特殊拦截,导致资源匹配失败

排查步骤

  1. 校验静态文件是否存在:登录服务器进入/wp-content/gallery/media/目录,确认img标签请求的裁剪后图片文件真实存在。如果文件不存在,检查wp-content、gallery目录的写入权限,确保Web服务用户有写入权限生成缩略图
  2. 禁用插件排查冲突:临时禁用所有图片优化、缩略图生成、安全防护、CDN类WordPress插件,再次测试img标签请求是否正常。如果恢复正常,逐个启用插件定位冲突项
  3. 关闭Apache MultiViews功能:在.htaccess的<IfModule mod_rewrite.c>块上方添加Options -MultiViews,禁用内容协商功能后重试
  4. 排查额外重写规则:检查Apache虚拟主机配置、全局配置中是否有针对图片请求、Accept头、Referer头的额外重写或拦截规则,如有先临时注释测试
  5. 开启WordPress调试定位:修改wp-config.php配置,开启调试日志:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

触发img请求的404后,查看wp-content/debug.log日志,定位具体的错误逻辑点

内容的提问来源于stack exchange,提问作者diesgomo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:06:08