Magento正在缓存404个URL,以便它们返回“200 OK”状态而不是“404 not found”。我该如何防止这种情况?

时间:2013-03-08 02:49:24

标签: apache oop magento

我在Apache(Debian)上使用APC缓存运行Magento Enterprise 1.9。

如果我浏览到我网站上不存在的网址,我会收到服务器的404响应,并按预期显示我的404网页。但是,如果我再次访问同一个网址 ,这次(以及随后的所有时间)我都会从服务器收到“200 OK”状态,尽管网址仍然无效且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”缓存版本(!)。

我该如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

这是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,以便进行衡量。