wordpress - 加载 RSS URL /feed/ 时 URL 的内容类型自动从 text/html 更改为 application/rss+xml
问题描述
有一系列奇怪的行为似乎都源于 Content-Type 标头问题。
该站点将运行良好,但问题会在一天中“随机”发生。但我可以通过执行以下操作来复制问题:
- 在服务器上,从 mod 缓存磁盘中清除 HTCache 并从 apache pagespeed 模块中刷新缓存。
在 redbot.org/ 上测试我的 WordPress 站点的任何页面 URL,它显示正确的标题。
Content-Type: text/html; charset=UTF-8
转到任何浏览器并加载提要网址。mysite.com/en/feed/ XML 提要看起来不错。或者访问http://redbot.org/并检查提要的标题,看起来不错。
Content-Type: application/rss+xml; charset=UTF-8
返回并测试http://redbot.org/上任何页面的 URL 。现在 Content-Type 从 text/html 切换到 rss+xml !
Content-Type: application/rss+xml; charset=UTF-8
这种内容类型的自动切换使 Facebook 和 Instagram 等应用内浏览器 (IAB) 变得异常火爆。它不是由 IAB 呈现 html 页面,而是为 RSS 提要加载 XML 文件。RSS 提要是随机的,可以是某个随机页面的评论提要,也可以是帖子提要。
显示与 RSS 提要相关的多个问题,而不是加载网站博客文章 url。
- 谷歌页面速度测试有时会显示 RSS 提要。https://developers.google.com/speed/pagespeed/insights/
- Twitter 卡验证器、Facebook 调试器验证器、whatsapp 聊天和 LinkedIn 验证器未显示元数据图像、标题和描述。
在 linux 中执行此命令将显示 RSS 提要而不是站点的 HTML
curl -A Twitterbot mysite.com/
在https://validator.w3.org/feed/中测试我的 RSS 提要 (mysite.com/en/feed/) 有时会显示评论 RSS 提要,而不是发布 RSS 提要。
我已经排除了以下可能的原因,因为我已经更新了每个项目或检查了代码是否有错误:
- 更新了 WordPress
- 更新的插件
- 更新主题
- 不再将 CSS 样式表直接插入/编写/内联到 HTML 页面
- 帖子不是自定义帖子类型。它们是常规的 wordpress 帖子。
- 使用 Wordpress 原生文本编辑器编写帖子,以防止 TinyMCE 编辑器等插件生成的 RSS 代码错误。
- RSS 提要经过验证。测试:validator.w3.org/feed/ 和 Feedvalidator.org
- 禁用 Apache PageSpeed 模块后,问题仍然存在。
我还通过停用所有插件进行了测试,但其中一个是使网站双语的 polylang。我不能禁用 polylang,因为没有它,很多帖子都不会出现在网站上。
现在暂时解决问题的方法是: 手动清除 HTCache 总是使常规 URL 的 Content-Type 回到 HTML/txt。
sudo htcacheclean -v -t -p /var/cache/apache2/mod_cache_disk -l1b -L1b
所以我继续禁用了cache_disk,到目前为止,该站点一整天都运行良好。每次我在浏览器中加载 RSS Feed url,然后在 Redbot.org 上测试任何网页的标题时,标题都会正确显示(html/txt)
sudo a2dismod cache_disk
sudo systemctl restart apache2
sudo systemctl stop apache-htcacheclean
我仍然不明白这个问题的根源是什么。所以我很困惑,并向大家寻求帮助。
任何想法可能导致这种奇怪的行为以及如何解决它?
解决方案
推荐阅读
- xml - RestAssured 为 POST 创建两个后续请求并返回 401 错误
- ios - 使用 cocapods 的 React 本机创建库
- javascript - webpack & babel-polyfill:无法解析源目录中的“core-js/modules/es6.array.map”
- python - pandas ValueError:以 10 为基数的 int() 的无效文字:''
- google-chrome - 免费或低成本的跨浏览器测试资源?
- javascript - 如何从 2 个数组中仅返回不重复的对象
- c# - 从 application.json 获取连接字符串
- r - 获取类字符/整数或我定义的任何类型的列索引?
- sql - 根据条件 oracle 将列设置为不为空
- javascript - 渐变跟随鼠标但没有赶上