如何确保客户端获得404错误状态?

时间:2010-07-09 18:29:06

标签: php apache caching http-status-code-404

这实际上是一个由两部分组成的问题。我的服务器设置为将Apache自身内的所有404错误重定向到index.php?404。这是否仍然向客户端发送404状态消息,告诉他们找不到页面,然后显示我自定义的404错误页面?因为我在其他页面中也有进程。虽然页面本身可能存在,但如果用户名(例如)无效或不存在,它只是直接从文件显示相同的404页面(包括404页面和模具)。我应该使用PHP发送额外的404状态来告诉客户端页面不存在,如果是,我该怎么做?

修改
进一步解释上述问题:
admin.example.com - > admin是有效的用户名,将显示页面
madeup.example.com - > madeup是一个无效的用户名,将输出404页面 * .example.com重定向到index.php进行处理,因此搜索引擎会认为页面存在是因为它已经处理然后我只是输出了404页并杀死了脚本......

我最近遇到了一个问题,即Google缓存了一个404错误的页面,所以我试图弄清楚当页面技术上存在时,如何阻止搜索引擎等在发送404页面时缓存或读取页面。还有其他更好的选择吗?

1 个答案:

答案 0 :(得分:0)

如果4nn / 5nn错误页面的实际HTTP状态标头为200 OK,则会将其编入索引。

因此,您需要确保它已与正确的HTTP状态标头一起发送。此错误通常是由将重定向发送到错误页面而不是转发/包含引起的。重定向基本上指示客户端向服务器发送一个全新的请求,这将始终导致200 OK。您希望以编程方式修改/设置错误页面内的标题,例如

header('HTTP/1.1 404 Not Found');

您可以使用FirebugWeb Developer Toolbar等工具确定实际的HTTP状态代码。