【问题标题】:Redirect a controller to main index将控制器重定向到主索引
【发布时间】:2011-08-18 13:05:18
【问题描述】:

我有一个用于重定向的控制器,名为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 并获得相同的行为。这很有挑战性,因为 Index.php 被 CodeIgniter 使用,所以我不能把 _remap 方法放在这里。因为,我对路线和 .htaccess 不是很熟悉,如果能帮我完成这项工作,我们将不胜感激。

【问题讨论】:

    标签: .htaccess codeigniter indexing routes


    【解决方案1】:

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

    我看不出这有什么意义,如果我是你,我只会将它发送到重定向控制器,这会使事情变得不那么混乱,但当然有一种方法如上所示。

    【讨论】:

    • 我有一个特殊的用例,我需要摆脱重定向段但保留它的功能。我会尽快尝试您的建议。
    • 太好了,谢谢。我刚开始测试。我正在迁移到一个新的测试服务器,并且遇到了一个阻止我尝试的问题。完美运行。
    猜你喜欢
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2019-08-06
    • 2012-07-18
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多