重定向到404页面还是显示404消息?

11

我正在使用一个cms,文件未找到错误可以通过不同的方式处理:

  1. 页面不会被重定向,但错误消息将作为内容显示(使用带有菜单/页脚的默认布局)。
  2. 页面将被重定向到error.php(页面看起来与1相同,但地址已更改)
  3. 页面将被重定向到现有页面,例如sitemap.php

在搜索引擎方面,是否存在一种较好的方法,还是没有任何区别?


系统是否会记录该URL的历史记录,因此知道当前正确的URL是什么?如果是这样,那么只需进行内部重定向并呈现当前内容。否则,您应该提供404错误(这就是它的作用)。 - user212102
2个回答

17
如果资源未找到,应返回404页面。重定向会导致302状态码,随后是“200 OK”,这意味着有某些内容存在。而404则明确表示“没有文件,请不要再打扰我”。像下面这样的方法将呈现具有正确头部代码的404页面:
<?php
if ($page_not_found) {
   header('This is not the page you are looking for', true, 404);
   include('your_404_page.php');
   exit();
}

也许将 header(...)exit() 放在 404.php 脚本中会更好。请记住,如果您通过函数include您的 404.php,它的父全局变量将无法访问。 - mrmowji

8

不要重定向。

忘记搜索引擎。如果我输入一个URL并且打错了一个小字符,你将我重定向到其他地方,那么我就必须重新输入整个URL。

页面不会被重定向,而是显示错误消息作为内容(使用默认布局与菜单/页脚)。

请明确它是一个错误页面。它不应该看起来像一个普通页面。

页面将被重定向到error.php(页面看起来与1.相同,但地址已更改)

不要。真的,真的不要。

页面将被重定向到现有页面,例如sitemap.php

HTTP中有一些重定向状态代码,但其中没有“未找到,但您可能会喜欢这个”的选项。


1
重定向不一定涉及到您位置栏中的URL被重新编写。例如,大多数网页上的404页面。确实,选项(2)很糟糕。 - Lightness Races in Orbit
1
由于问题涉及服务器和客户端之间的交互,因此可以合理地假设它是在谈论HTTP重定向。对于客户端没有任何展示的内部重定向是没有影响的。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接