代码之家  ›  专栏  ›  技术社区  ›  Dr. Frankenstein

代码点火器中的URI路由

  •  2
  • Dr. Frankenstein  · 技术社区  · 16 年前

    我的CI站点运行良好,只是URL有点难看。 我应该采取什么方法使我能够路由显示在以下位置的内容:

    http://domain.com/content/index/6/Planning

    网址:

    http://domain.com/Planning

    我对是否应该在routes文件或.htaccess中进行此操作感到困惑。

    谢谢

    2 回复  |  直到 16 年前
        1
  •  4
  •   Marek    16 年前

    有两种方法可以设置config/routes.php,其适用性取决于您的需求。

    1. 如果只需要路由几个页面,则为每个页面路由:

      $route['Planning'] = 'content/index/6';  
      $route['Working'] = 'content/index/7';  
      // etc.
      
    2. 您可以使用回退URL,它将在所有其他路由规则之后匹配-这意味着您必须在回退规则之前设置可能与此规则匹配的规则。它还意味着您需要释放ID,并且必须根据标题查询数据库:

      $route['register'] = 'register'; // this would match the fallback rule  
      $route['([a-z-A-Z1-9_]+)'] = 'content/index/$1'; // letters, numbers and underscore  
      // you'll receive "Planning" as parameter to Content::index method
      
    3. 或者,您可以有一个策略,即所有指向内容的URL必须以大写字母开头,在这种情况下,您不必担心其他路由规则。

      $route['([A-Z]{1}[a-z-A-Z1-9_]+)'] = 'content/index/$1';  
      // again, you'll receive "Planning" as parameter to Content::index method
      
    4. 您仍然需要数字标识,因此不必更改控制器/模型:

      $route['(\d+)/[a-z-A-Z1-9_]+'] = 'content/index/$1';  
      // routes now look uglier: http://domain.com/6/Planning
      
        2
  •  0
  •   David Morrow    16 年前

    http://codeigniter.com/user_guide/general/routing.html

    您应该能够通过本页中的一些示例来完成这一点。

    推荐文章