Code Igniter url路由问题(使用尾部斜杠)

时间:2009-11-16 11:07:47

标签: php mod-rewrite codeigniter url-routing

我是codeIgniter的新手。

我非常关注我开发的网站上的网址。是否有可能创建这些类型的网址?我开发的网站通常都有一个集成的管理界面,并且在斜线后面添加了 new,edit或delete添加到网址的末尾

以下是一些假设的示例(一个带有管理员网址):

顶级网页(无尾随斜线)

site.com/about
site.com/contact
site.com/contact/edit

部分索引列表(列表有尾部斜杠)

site.com/blog/
site.com/products/
site.com/products/edit

部分页面(列表有尾部斜杠)

site.com/blog/first-post
site.com/products/best-product
site.com/products/new
site.com/products/best-product/delete

部分类别

site.com/blog/code-questions/
site.com/products/red-products/
site.com/products/red-products/delete

我看到的第一个问题是将一个带有尾部斜杠的URL发送到另一个控制器,然后没有一个。由于您无法在路由文件中添加它们。例如,对于顶级页面,我如何知道调用Pages控制器?如何区分段索引列表?我无法在routes.php中添加尾部斜杠!

site.com/about
site.com/blog/

与节页面和类别相同。

通常我过去使用.htaccess文件完成了这项工作。

我在自己的应用程序中如何为url构建htaccess文件的一些示例

RewriteRule ^new$ index.php?static&new
RewriteRule ^edit$ index.php?edit
RewriteRule ^([a-z0-9\-]+)$ index.php?static&post=$1
RewriteRule ^([a-z0-9\-]+)/edit$ index.php?static&edit=$1

RewriteRule ^([a-z0-9\-]+)/$ index.php?section=$1
RewriteRule ^([a-z0-9\-]+)/new$ index.php?section=$1&new
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)$ index.php?section=$1&post=$2
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/$ index.php?section=$1&category=$2

无论如何使用codeIgniter执行此操作?我是否应该在控制器生成的URL上重写规则?是否可以使用routing.php文件执行此操作? 如果codeIgniter没有这样做,你能建议一个可以的框架吗?

此外,如果在绑定到控制器类名称时如何在url中使用连字符?

1 个答案:

答案 0 :(得分:2)

CodeIgniter有一种很好的处理URI路由的方法(http://codeigniter.com/user_guide/general/routing.html)。

默认情况下,如果您使用CodeIgniter自己的.htaccess(http://codeigniter.com/user_guide/general/urls.html),则所有请求都会生成漂亮的段。

您可以轻松使用CodeIgniter的routing.php文件来生成您所追求的URL。请参阅http://codeigniter.com/user_guide/上非常容易理解的文档。