含非ASCII文件名的Joomla 4图片无法被Facebook抓取问题问询
Joomla 4含非ASCII字符的图片URL无法被Facebook抓取的问题分析
问题背景
Joomla 4有一项争议性改动:会在图片URL的片段部分(#后)附加编码的元数据。例如:
- 原始URL:
/images/articles/testImage.jpg - 处理后URL:
/images/articles/testImage.jpg#joomlaImage://local-images/articles/testImage.jpg?width=400&height=400
该改动从2021年起就存在,对于ASCII文件名的图片没有影响,但当文件名包含非ASCII字符(比如希腊语文件名“εικόνα1.jpg”)时,会出现异常:图片在浏览器中能正常显示,但Facebook爬虫无法抓取,返回错误 net:ERR_HTTP2_PROTOCOL_ERROR 200,且该问题仅出现在含非ASCII字符的场景中已通过调试工具验证。
问题示例
(站点域名已替换为samplesite.gr以保护隐私,[h]为手动添加避免链接解析)
- Facebook请求的编码URL:
[h]ttps://z-p3-external.fath7-1.fna.fbcdn.net/emg1/v/t13/14286829027119499094?url=https%3A%2F%2Fsamplesite.gr%2Fimages%2Farticles%2Flogos%2F%CE%BB%CE%BF%CE%B3%CF%8C%CF%84%CF%85%CF%80%CE%BF_8317c.png%23joomlaImage%3A%2F%2Flocal-images%2Farticles%2Flogos%2F%CE%BB%CE%BF%CE%B3%CF%8C%CF%84%CF%85%CF%80%CE%BF_8317c.png%3Fwidth%3D885%26height%3D233&fb_obo=1&utld=samplesite.gr
- 站点生成的原始URL:
[h]ttps://samplesite.gr/images/articles/logos/λογότυπο_8317c.png#joomlaImage://local-images/articles/logos/λογότυπο_8317c.png?width=885&height=233
责任方排查方向
目前无法直接确定问题根源,可能的两个方向:
- Joomla侧问题:Joomla在生成URL片段时未对非ASCII字符做正确的URL编码,虽然浏览器能兼容这种未编码的片段,但Facebook爬虫的URL解析逻辑可能不支持。
- Facebook爬虫问题:爬虫对包含非ASCII字符的URL片段处理存在BUG,不符合HTTP协议中关于URL片段的规范(协议允许非ASCII字符,但通常建议进行编码)。
临时解决方法
可通过移除og:image标签中附加的元数据部分,仅保留原始图片URL,即可让Facebook正常抓取图片。
内容的提问来源于stack exchange,提问作者pkExec
相关产品推荐
相关产品推荐

