站点OGP在Discord及rakko等爬虫中无法正常展示问题咨询
问题成因分析
- 重定向顺序错误:当前规则先处理尾斜杠重定向,再处理HTTP转HTTPS,会导致请求HTTP带尾斜杠的路径时触发两次连续重定向,Discord、rakko这类轻量OGP爬虫的重定向跟随次数上限很低,通常仅支持1次跳转,两次跳转就会直接终止抓取,无法获取页面OGP内容。
- 临时重定向兼容性问题:当前尾斜杠重定向使用的是默认302临时重定向,部分OGP爬虫对临时重定向的处理逻辑不完善,不会主动跳转抓取目标地址内容。
- OGP配置不规范:当前
og:image:type配置的MIME类型image/jpg不符合官方标准,正确的JPG图片MIME类型为image/jpeg,Facebook、opengraphcheck这类工具对该错误有较高容错性,但Discord等平台严格校验MIME格式,识别失败就会放弃加载完整OGP信息。
解决方案
- 调整.htaccess重定向规则优先级,修改重定向类型,避免多次跳转,修正后规则如下:
# 优先执行HTTP转HTTPS重定向,减少跳转次数 RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # 处理尾斜杠移除重定向,使用301永久重定向提升兼容性 RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] # 无后缀路径内部重写为.html文件 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.html [NC,L]
- 修正OGP配置项错误,将
og:image:type的content属性值从image/jpg修改为image/jpeg - 若修改后仍未恢复,可检查站点的WAF、CDN安全规则,确保未拦截Discord(UA为
Discordbot/2.0)、rakko等OGP爬虫的请求。
内容的提问来源于stack exchange,提问作者Sebastius
相关产品推荐
相关产品推荐

