2011-08-18 36 views
0

我有一个控制器,我正在使用称为redirect.php的重定向。该控制器有一个_remap($method)将控制器重定向到主索引

_remap方法的工作原理是将重定向控制器后的任何URI字符串归属回控制器。例如,为了http://mysite.com/redirect/sometext请求将请求发送回http://mysite.com/redirect

这是我想要的行为,但我怎么会做不必键入http://mysite.com/redirect/sometext这发生在index level如此相反,我可以输入http://mysite.com/sometext并获得同样的行为。这很具挑战性,因为CodeIgniter使用Index.php,所以我不能在这里输入_remap方法。因为我对路由和.htaccess不是很熟悉,所以任何帮助都不用理解。

回答

1

如果你想走路线,你会为每个控制器制作一个路线,也就是说控制器somepage将有一个路径$route["somepage"] = "somepage";,然后在所有路线之后(在路线的最底部)。路由通过找到第一个匹配的正则表达式然后使用它来工作,所以为了确保所有的控制器都能正常工作,并且只捕获常规文本,就需要这些规则中的每一条。
然后,我们制定'默认'规则,这将适用于以前的路线检查中未捕获的所有内容。像$route["(.*)"] = 'redirect/index/$1';。这会将您重定向到控制器redirect,在上例中,第一个uri段(段3)为sometext。请注意,这也将运行404页,它将运行所有,这是没有在上述规则中定义。

我没有看到这一点,如果我是你,我只是将它发送到重定向控制器,它会使事情不那么凌乱,但当然有一种方式,如上所示。

+0

Iv'e得到了一些特殊用例,我需要摆脱重定向段但保留它的功能。我会很快尝试你的建议。 – Chamilyan

+0

非常好,谢谢。我刚刚开始测试。我正在迁移到一个新的测试服务器,并有一个问题阻止我试用这个。完美的作品。 – Chamilyan