首页 > 解决方案 > 加载 RSS URL /feed/ 时 URL 的内容类型自动从 text/html 更改为 application/rss+xml

问题描述

有一系列奇怪的行为似乎都源于 Content-Type 标头问题。

该站点将运行良好,但问题会在一天中“随机”发生。但我可以通过执行以下操作来复制问题:

  1. 在服务器上,从 mod 缓存磁盘中清除 HTCache 并从 apache pagespeed 模块中刷新缓存。
  2. 在 redbot.org/ 上测试我的 WordPress 站点的任何页面 URL,它显示正确的标题。

    Content-Type: text/html; charset=UTF-8

  3. 转到任何浏览器并加载提要网址。mysite.com/en/feed/ XML 提要看起来不错。或者访问http://redbot.org/并检查提要的标题,看起来不错。

    Content-Type: application/rss+xml; charset=UTF-8

  4. 返回并测试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。

我已经排除了以下可能的原因,因为我已经更新了每个项目或检查了代码是否有错误:

我还通过停用所有插件进行了测试,但其中一个是使网站双语的 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

我仍然不明白这个问题的根源是什么。所以我很困惑,并向大家寻求帮助。

任何想法可能导致这种奇怪的行为以及如何解决它?

标签: wordpressrsscontent-typepagespeedpolylang

解决方案


推荐阅读