当我在我的网站上输入一个不存在的url时,它会把我带到由routes.php中的这个指定的404页面:
$route['404_override'] = 'page/not_found';
因此页面的设计与我在“page”目录下的not_found.php视图中所做的一样。
但是,如果我使用此函数手动强制执行404:
show_404();
它会将我带到没有样式的默认CodeIgniter 404页面:
404 Page Not Found
The page you requested was not found.
我怎样才能让它转到我在路由文件中指定的同一个404页面?
7条答案
按热度按时间ocebsuys1#
这里所有的答案看起来都很过时(至少在第2版中是这样),或者说是矫枉过正。这里有一个更简单、更容易管理的方法,它只涉及两个步骤:
1.在application/config/routes.php中,修改字段404_override以指向某个控制器:
1.在
routes.php
中指定的控制器中,实现index()
方法,这样它就可以加载自定义的错误404视图。您可能还需要设置一些头文件,这样浏览器就可以知道您返回了一个404错误:就像代码中提到的注解一样,确保在application/views/404.php中有一个视图文件,在那里你实际上有你的自定义404页面。
顺便提一下,本页中的一些答案建议您修改/system内部的内容,这是一个坏主意,因为当您更新CodeIgniter版本时,您将覆盖您的更改。我建议的解决方案不会与核心文件混淆,这使您的应用程序更易于移植和维护,并且更不易更新。
cbwuti442#
使用_remap()函数。这允许你做一些非常强大的事情,除了通常内置的404错误--比如
让所有控制器扩展
MY_Controller
:然后在
routes.php
中,将404设置为主控制器,设置为不存在的功能-即但在welcome中有NO
my_404()
函数-这意味着所有404都将通过_remap
函数-因此您可以实现DRY,并将所有404逻辑集中在一个位置。您可以在逻辑中使用
show_404()
或仅使用redirect('my_404')
。j8ag8udp3#
要更改
show_404
的行为,您需要修改CI核心(system/Core/Common.php
)中的文件,这对于功能更新来说并不实用。您可以:
controller/method
。1.您可以创建一个自定义库来处理自定义404,并像
$libInstance->show_404();
一样使用它1.或使用视图:
zfciruhq4#
如果您尝试使用user_guide,您会看到它显示以下内容:
show_404('page ' [,'log_error'])此函数要求传递给它的字符串是指向未找到的页的文件路径。请注意,如果未找到控制器,CodeIgniter会自动显示404消息。
因此,您需要将控制器名称作为第一个参数传递,第二个参数用于启用或禁用日志记录。
0aydgbwb5#
CodeIgniter带有一个默认的404错误页面,但通过使用codeigniter的路由选项,您可以轻松地向您的用户显示您的自定义404错误页面。
要做到这一点,只需转到您的codeigniter项目的路由文件,并在下面一行中键入
这里的error_404是一个控制器文件,用于显示自定义的404错误页面或您的codeigniter项目中的任何其他类型的错误页面。
创建error_404文件并将此代码复制到此文件中
在CodeIgniter视图文件夹中创建Error_page视图文件,就这样,键入任何错误的URL,现在您可以看到您的自定义404错误页。
如果你有任何疑问,那么你可以按照这个tutorial它有一步一步的教程来创建自定义404错误页在codeigniter
xkftehaa6#
将
application/errors/error_404.php
文件更改为您要显示的页面。这是show_404()
正在显示的文件...此函数将使用以下错误模板显示提供给它的404错误消息:
该函数期望传递给它的字符串是未找到的页面的文件路径。请注意,如果未找到控制器,CodeIgniter会自动显示404消息。
CodeIgniter会自动记录任何
show_404()
调用。将可选的第二个参数设置为FALSE
将跳过记录。*k3fezbri7#
您需要在application/config/routes.php中设置以下代码
在应用程序/控制器中创建一个名为"page.php"的控制器后
然后您可以在应用程序/视图中创建您自己的404错误页面设计,命名为"not_found.php"
或者