【问题标题】:Directories in codeigniter controllercodeigniter 控制器中的目录
【发布时间】:2012-01-02 21:42:03
【问题描述】:
我的 codeigniter 控制器中有两个目录。
/控制器/管理员/
- dashboard.php
- content.php
- enquiries.php
/控制器/成员/
- profile.php
- chat.php
- settings.php
因为目录文件夹本身不是控制器,所以如果用户浏览到目录的根目录,我将无法执行任何功能。
如果用户浏览到的示例
/localhost/admin/
不会加载视图,也不会显示 404。这让用户知道该目录确实存在,给我带来安全风险,因为人们会知道我有一个管理目录。
如果用户浏览到目录文件夹的根目录,怎么可能显示 404 消息???
【问题讨论】:
标签:
codeigniter
controller
directory
http-status-code-404
【解决方案1】:
我这样做的方式是在我不想隐藏的目录中创建默认控制器welcome.php 并添加show_404() 函数。像这样:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
show_404();
}
}
这样,您不必摆弄路线或重写规则。简单干净。
【解决方案2】:
你可以在 config/routes.php 中添加这个:
$route['admin'] = 'errors/page_missing';
$route['members'] = 'errors/page_missing';
... 其中 Errors 是一个带有 page_missing 方法的控制器,您可以在其中加载“找不到文件”视图。