2010-11-22 87 views
2

当网站不存在时应该发生什么?如果我在我的.htaccess中设置了一个自定义错误页面,我得到一个302临时重定向到我的404页面(我发送404头文件)。这是应该如何工作?或者我应该做一个301永久重定向到错误页面?我使用的是PHP和Apache。如果网页不存在,我应该返回什么标题?

回答

5

不存在的页面没有“临时移动”(301)或“永久移动”(302)到关于文件不存在的页面,它不存在。要发送的正确标题是404,而不是其他任何内容。

不要在任何地方重定向,而是在请求的URL处提供“文件未找到”页面内容。

+0

但我的网页是动态生成的(不好意思忘了提),所以我需要加载页,以检查其有效的页面,因此斜面从我的.htaccess文件重定向的权利? – Luke 2010-11-22 21:29:47

+1

您也可以使用`header()`从PHP发送404(或其他)头文件。 – GolezTrol 2010-11-22 21:31:32

7

如果它从未存在,则应发送404 Not Found

如果它曾经存在,但没有更多,你应该发送410 Gone

设置您的服务器直接发送错误响应。

您不应该重定向到错误页面。这基本上意味着谈话会走:

  • 浏览器:我可以有/ foo吗?
  • 服务器:您可以在/ bar找到/ foo!
  • 浏览器:我可以有/ bar吗?
  • 服务器:我找不到/ bar。

诱饵和开关永远不好。

1

如果您有一个静态错误页面,比如说404.html,apache显示未找到页面时显示,并且您还需要能够为动态页面提供404页面,您可以通过发送从PHP的404头和饲料的错误页面,以及:

<?php 
header("HTTP/1.0 404 Not Found"); 
readfile("404.html"); 
?> 
相关问题