使用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";
....但是如何在特定控制器中使用多个函数? ......也许它甚至不是正确的解决方法。
答案 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”。