使用CodeIgniter使标题字符串成为所有页面的整个URI

时间:2011-08-17 19:43:11

标签: php codeigniter seo

使用CodeIgniter我正在尝试创建一个使用标题字符串作为整个 URI的URL结构;例如: www.example.com/this-is-a-title-string

我非常有信心我需要在URL Helper中使用url_title()函数以及routes.php配置文件夹,但我总是把它全部放在一起。

我在哪里定义URI以及如何通过routes文件夹捕获它?

似乎是一个直接的问题,但我陷入了端到端创建URL的困境。我错过了什么?

我想到了routes文件夹中的一个全能:$route['(.*)'] = "welcome/controller/$1"; ....但是如何在特定控制器中使用多个函数? ......也许它甚至不是正确的解决方法。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容将所有请求发送给驱动程序:

$route['(:any)'] = "welcome/function";

然后使用_remap function在控制器内路由请求。

但是,如您所建议的那样使用URL限制了CI功能。尝试更好的方法,例如 www.example.com/article/this-is-a-title-string

$route['article/(:any)'] = "articles/index";

在文章(控制器)中,使用_remap ...

答案 1 :(得分:0)

如果您要重新路由每个请求,则应扩展CI_Router。

实际的实施取决于你正在做什么。如果您自定义CI_Router,则可以在检查routes.php的代码之后执行此操作,以便您可以保留routes.php以供将来自定义。

如果URI包含控制器,函数和参数,您可以在扩展的CI_Router中解析它,然后像正常一样继续处理请求。

如果URI是任意的,那么你需要一些东西(文件,数据库等)将URI映射到正确的控制器/函数/参数。以博客文章为例,您可以在数据库中搜索URI(也就是WordPress中的post-slug)并获取相应的记录。然后将请求转发给“articles / view / ID”。