0

我有一些网站http://www.example.com,我有一个控制器abc,其中有方法index()可以加载我的网站视图。我已将我的控制器abc设为默认控制器,这样当用户进入时example.com,他可以直接看到视图。在任何情况下,我都无法更改此默认控制器。现在我想如果用户输入example.com/1234,其中 1234 是配置文件编号,所以它应该显示该配置文件。如果是example.com/5678,那么它应该显示 5678 的个人资料。我面临的问题是,如果用户输入,example.com/1234那么它会抛出 404 错误,因为我没有任何控制器 1234,即使我在默认控制器的索引函数中进行检查,if($this->uri->segment(3) == True)它也会抛出 404 错误。任何帮助,将不胜感激。

4

4 回答 4

2

在您的路线文件中添加此更改:

$route['(:any)'] = 'abc/index/$1';

然后在 abc 控制器中:

public function index($profile=NULL)


    {

        $profile = $this->uri->segment(1, 0);

        echo($profile);// just for checking, of course, you will remove this later, + the rest of your code, related to user id
于 2013-07-20T11:12:23.293 回答
0

添加routes.php

$route["(.*)"] = 'abc/userid/$1';

然后在主控制器 abc 添加

public function userid()
    {
     $userid=$this->uri->segment(1);
echo ($userid);
    }

现在你在这个函数中有用户 ID :)

于 2013-07-22T06:00:31.273 回答
0

在config/hooks.php中创建一个pre_controller挂钩。如果您还没有启用钩子,请记住在config/config.php中启用钩子。

例子:

$hook['pre_controller'][] = array(
                                'class'    => 'Thehook',
                                'function' => 'check_for_profile',
                                'filename' => 'thehook.php',
                                'filepath' => 'hooks'
                                );

然后在hooks/thehook.php中创建你的钩子方法check_for_profile()。此方法可以检查匹配的配置文件并相应地显示或重定向。如果未找到配置文件匹配项,您可以调用show_404()方法。

这样,您现有的控制器/方法路径不受影响,并且您的所有路由都保持不变。

如果您在挂钩内重定向,请使用以下格式:

header("Location: controller/method"); 

..而不是

redirect('controller/method');

...因为后者将导致连续循环

于 2013-07-22T02:23:52.093 回答
0

通常,URL 字符串与其对应的控制器类/方法之间存在一对一的关系。在 routes.php(配置文件夹)中,您还可以更改默认控制器和路由。阅读以下文档中的通配符(部分)更多信息阅读文档

于 2013-07-20T11:08:09.580 回答