【问题标题】:Magento is caching 404 URLs so that they return "200 OK" status instead of "404 not found". How do I prevent this?Magento 正在缓存 404 URL,以便它们返回“200 OK”状态而不是“404 not found”。我该如何防止这种情况?
【发布时间】:2013-03-21 09:11:30
【问题描述】:

我在 Apache (Debian) 上运行带有 APC 缓存的 Magento Enterprise 1.9。

如果我浏览到我网站上不存在的 URL,我会收到来自服务器的 404 响应,并按预期显示我的 404 页面。但是,如果我再次访问同一个 URL,这一次(以及所有后续时间)我会从服务器收到“200 OK”状态,尽管 URL 仍然无效并且 404 页面仍然存在呈现。

例子:

$ curl -I http://www.example.com/some-nonexistent-URL
$ HTTP/1.1 404 Not Found

$ curl -I http://www.example.com/some-nonexistent-URL
$ HTTP/1.1 200 OK

假设这是因为对该 URL 的响应以某种方式被缓存,因此服务器发送了 404 页面 (!) 的“200 OK”缓存版本。

我怎样才能防止这种情况发生?

【问题讨论】:

    标签: apache oop magento


    【解决方案1】:

    这是 Magento 的全页缓存错误。

    我发现 Magento 会检查是否存在名为 NO_CACHE 的 cookie,因此我只是将 $_COOKE["NO_CACHE"] = true; 放在调用 404 操作之前的位置(在我的例子中,/app/code/core/Mage/Cms/controllers/IndexController.php)。

    我还在 404 页面模板本身中添加了一个 cache-control: no-cache, must revalidate 标头和相同的 cookie,以进行良好的衡量。

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2017-07-01
      • 2015-01-09
      • 2017-04-22
      相关资源
      最近更新 更多