我有一个控制器用于名为redirect.php
的重定向。该控制器只有一个_remap($method)
。
此_remap
方法的工作原理是将重定向控制器之后的任何URI字符串归入控制器。例如,对http://mysite.com/redirect/sometext
的请求会将请求发回http://mysite.com/redirect
这是我想要的行为,但我如何在index level
发生这种情况,因此我不必键入http://mysite.com/redirect/sometext
,我可以输入http://mysite.com/sometext
并获得相同的行为。这很有挑战性,因为CodeIgniter使用了Index.php
,所以我不能在这里放置_remap
方法。至于,我对路线和.htaccess并不是非常熟悉,任何帮助都会受到赞赏,以使其发挥作用。
答案 0 :(得分:1)
如果你想沿着路线前进,你会为你拥有的每个控制器建立一条路线,也就是控制器somepage
将有一条路线$route["somepage"] = "somepage";
,然后在所有这些路线之后(在最底层) (路线)。路由通过查找第一个匹配的正则表达式然后使用它来工作,因此为了确保所有控制器都能正常工作,并且只捕获常规文本,您需要遵守这些规则。
然后我们制定“默认”规则,这将运行在之前的路径检查中未捕获的所有内容。像$route["(.*)"] = 'redirect/index/$1';
这样的东西。这会将您重定向到控制器redirect
,第一个uri段(段3)在上面的示例中为sometext
。请注意,这也适用于404页面,它适用于上述规则中未定义的所有内容。
我没有看到这一点,如果我是你,我会把它发送到重定向控制器,它会使事情变得不那么混乱,但当然有一种方法如上所示。