【问题标题】:rewriting urls in codeigniter在 codeigniter 中重写 url
【发布时间】:2011-09-23 18:01:07
【问题描述】:
我怎样才能重写下面的codeigniter url
localhost/test_project/pages/show_page/11
到
localhost/test_project/pages/11
是否可以进一步减少:
localhost/test_project/11
谢谢。
【问题讨论】:
标签:
php
url
codeigniter
mod-rewrite
【解决方案1】:
您应该编辑此文件:application/config/routes.php。
假设您有一个pages 控制器和一个show_page 方法,其中接收一个id 作为参数(正如您所说)。
您的网址类似于localhost/test_project/pages/show_page/11
我假设参数始终是一个数字,因此使用here 所述的通配符,您可以将以下内容添加到您的routes.php 文件中:
$route['pages/(:num)'] = "pages/show_page/$1";
因此,您的 URL 将类似于 localhost/test_project/pages/3。这就像说如果有人试图访问localhost/test_project/pages/3,他/她实际上是指localhost/test_project/pages/show_page/3。
对于像localhost/test_project/3 这样的网址,您可以添加:
$route['(:num)'] = "pages/show_page/$1";
【解决方案2】:
你有几个options。这些是按优先级降序排列的。
- 首先是
routes.php,这是通常首选的处理方式(信息已经提供,但here又是)。
- 您还可以将 _resolve 方法添加到控制器(这意味着 CI 需要首先访问您的控制器),并且
- 最后你可以重写 CI_Router 库,这个类实际上返回要去的路由。
说真的,除非您知道自己在做什么,否则不要覆盖 CI_Router。