php - Codeigniter 和 PHP - 强制 404?

标签 php codeigniter error-handling

在codeigniter中,如你所知,一个页面形式为:/class/function/ID,其中class是 Controller 名,function是 Controller 内部的方法,ID是参数传递给那个方法。

典型的用法是(例如,对于图书网站)将图书 ID 传递给函数,该函数随后会在数据库中查询合适的图书。我的问题是这样的:我在乱搞并随机(在 url 字符串中)输入了一个数据库中不存在的 ID(通过正常的点击浏览,这永远不会发生)并且由于残留查询而导致数据库错误我尝试使用不存在的 ID 执行。

我已经编写了代码来检查在尝试使用 ID 之前是否返回了任何行,但是如果 ID 不存在我希望用户获得 404 错误页面而不是空白页面或其他内容(因为这似乎是正确的功能)。这需要是一个真正的 404 页面(而不是简单地加载一个看起来像 404 页面的 View ),以免干扰搜索引擎。好的 - 所以我的问题是:在正常的程序逻辑流程中(如上所述)我如何使用 codeigniter 强制出现 404 错误?谢谢。

更新:code igniter 有一个show_404('page') 函数,但我认为这不会生成真正的 HTTP 404 错误...

最佳答案

show_404() 实际上为搜索引擎发送正确的 header 以将其注册为 404 页面(它发送 404 状态)。

使用 Firefox 插件检查调用 show_404() 时收到的 header 。您会看到它发送了正确的 HTTP 状态代码。

检查默认的application/errors/error_404.php。第一行是:

<?php header("HTTP/1.1 404 Not Found"); ?>

该行将 HTTP 状态设置为 404。这就是搜索引擎将您的页面读取为 404 页面所需的全部内容。

关于php - Codeigniter 和 PHP - 强制 404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236768/

相关文章:

php - 表单定位 iframe 在 FireFox 中不工作

codeigniter - 基于 Ion Auth 库在 CodeIgniter 中创建登录表单

php - Codeigniter:在模型与 Controller 、模型与模型、 Controller 与 Controller 之间使用变量的最简单方法

coldfusion - ColdFusion 9的站点范围错误处理程序不起作用

php - 如何将 Ajax 查询与 Silex 结合使用?

php - 如何避免在 Laravel 模型创建事件中创建记录

php - 如何在codeigniter中将来自3个不同输入字段的数据一起插入到mysql数据库的表的一列中

android - Android : Android App is not responding, close it?

c# - Form.Show方法错误C#

php - MYSQL 按日期选择和分组