我在apache php上使用CodeIgniter,如果我在控制器级别或方法级别错误输入url(例如http://www.example.com/index.php/mistypedcontroller/mistypedfunction
),我会得到404页面。
但如果我输入http://www.example.com/mistyped.php/controller/function
,我会得到一个空白页面。有没有办法在这里显示相同的404页面?
答案 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
文件的请求。