【问题标题】:codeigniter conditional routingcodeigniter 条件路由
【发布时间】:2012-09-18 16:12:09
【问题描述】:

我正在尝试根据第一个 URI 段设置路由。

我有一个规则:

$route['(:any)'] = pages/view_page/$1;

我想让我的路由是有条件的,这样如果一个名为 URI 段 1 的控制器被调用,它就会像往常一样进入控制器。 如果不存在控制器,则转到 pages/view_page 函数。

我尝试使用 if 语句包装 $route 规则,该语句检查 URI 段 1 并使用它来查看是否存在匹配它的文件,但这似乎不起作用。

有没有人对如何在不必编写大量路由配置的情况下做到这一点有任何建议。

【问题讨论】:

    标签: php codeigniter config routes


    【解决方案1】:

    由于路由覆盖是简单的基于正则表达式的转换,因此您不能真正直接嵌入“否则会起作用”的逻辑。这使您基本上有两种选择:

    1. 在“catch all”(:any) 规则之前明确列出您想要工作的路线
    2. 使用$route['404_override'] 保留路由来指示当没有找到控制器时应该加载哪个控制器。但是,请检查传入的 url 并调用 show_404() 并输出正确的 404 http 状态代码以查找缺少的静态资产等。

    【讨论】:

    • 好棒。我将手动为画廊之类的东西输入正确的路线。不过,如果你能自动做到这一点,那就太酷了。
    猜你喜欢
    • 2010-11-20
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多