代码之家  ›  专栏  ›  技术社区  ›  tetsujinsan

Codeigniter中的路由。需要Regexp。查找不包含特定单词的所有内容

  •  0
  • tetsujinsan  · 技术社区  · 10 年前

    我对Codeigniter框架中的路由有一些问题。我迫切需要找到正则表达式,当URL中没有字符串时,它可以识别字符串 '管理员' 包括

    环境信息:

    • Codeigniter框架
    • i18n多语言库帮助程序(将en/ru/fr/添加到URL时,语言会更改)
    • HMVC模块启用 主要的 管理 模块

    路由选项:

    1. $route['default_controller'] = "main";
    2. $route['(\w{2})?\/admin\/?(.*)'] = 'admin/$2';
    3. $route['(\w{2})?\/?((?!admin).*)'] = 'main/$2';
    4. $route['(\w{2})'] = $route['default_controller'];
    5. $route['404_override'] = '';
    

    描述路由行为的问题。

    总结

    在我的路由配置中,我需要regexp,它将启动“ 主要的 “没有时的模块” 管理 URL地址中的单词。这也应该与内部化一起使用。

    我已经想出了 (\w{2})?\/((?!admin).*) 但只有当我将语言添加到URL时,如“somewebsite.com”/ 英语 /some_controller/(…)“因为”/“被识别。

    我也试过了 (\w{2})?\/((?!admin).*)|((?!admin).*) 但添加了第三组,因此“ 主/2美元 “规则不起作用(”main/$3“应该起作用,但不起作用)”

    任何帮助都将不胜感激,谢谢

    1 回复  |  直到 10 年前
        1
  •  0
  •   tetsujinsan    10 年前

    以下设置用于 路由 文件对我有用。请注意规则的顺序

    $route['default_controller'] = "main";
    $route['(\w{2})'] = $route['default_controller'];
    $route['admin'] = 'admin';
    $route['(\w{2}\/)?admin\/?'] = 'admin';
    $route['(\w{2}\/)?admin\/?(.*)'] = 'admin/$2';
    $route['(\w{2}\/)?((?!admin).*)'] = 'main/$2';
    $route['(\w{2})?/(.*)'] = '$2';
    $route['404_override'] = '';