可以CodeIgniter显示404页面错误的index.php网址?

时间:2015-04-06 19:03:51

标签: codeigniter http-status-code-404

我在apache php上使用CodeIgniter,如果我在控制器级别或方法级别错误输入url(例如http://www.example.com/index.php/mistypedcontroller/mistypedfunction),我会得到404页面。

但如果我输入http://www.example.com/mistyped.php/controller/function,我会得到一个空白页面。有没有办法在这里显示相同的404页面?

1 个答案:

答案 0 :(得分:2)

  

“CodeIgniter可以显示错误输入的index.php网址的404页面吗?”

不,它不能。如果您输错了index.php,那么您不再使用CodeIgniter。

查看此文件,您将看到index.php构建了所有内容,最后一行包含CodeIgniter.php核心文件。


www.example.com/index.php/mistypedcontroller/mistypedfunction

上面的第一个使用index.php,因此它是由CodeIgniter生成的。

www.example.com/mistyped.php/controller/function

第二个,因为它不使用index.php ,与CodeIgniter完全无关。

  

有没有办法在这里显示相同的404页面?

它必须是一个独立的文件,并使用.htaccess选项通过Apache的ErrorDocument 404文件为您的特定服务器进行配置。

或者,如果您只是关注the documentation for removing the index.php from the URL,您的上述情况就永远不会发生;您的URL页面示例将导致CodeIgniter 404错误,因为任何/每个URL(指向不存在的文件)都会强制进入您的index.php文件。

  

如果您的Apache服务器启用了mod_rewrite,则可以使用带有一些简单规则的.htaccess文件轻松删除此文件。下面是这样一个文件的示例,使用“否定”方法,除了指定的项目之外,所有内容都被重定向:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
  

在上面的示例中,除现有目录和现有文件之外的任何HTTP请求都被视为对index.php 文件的请求。