半夜三点还不能睡觉就为了弄 codeigniter 的路由区分二级列表页和一级内页的问题 求帮忙::doge::

2016-01-17 03:46:30 +08:00
 publicid999

二级列表首页
$route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)'] = 'category/clist/$1/$2';
/catea/cateb/
/catea/cateb

一级内页
$route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)'] = "article/view/$1/$2";
/cate/123
/cate/123.html
/cate/winter.html
/cate/winter-123abc.html

区分方法一
uri 末尾带 /的算列表首页
其他算内页

区分方法二
末尾带.html 的算内页
其他算列表首页

尝试过无效的代码如下
// $route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-].html)'] = "article/view/$1/$2";
// $route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]
.)html'] = "article/view/$1/$2";
// $route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]).html'] = "article/view/$1/$2";
// $route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]
).html'] = "article/view/$1/$2";
// $route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)/'] = 'category/clist/$1/$2';
// $route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)\/'] = 'category/clist/$1/$2';

以上代码都会被以下代码取代效果
$route['([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)'] = "article/view/$1/$2";

半夜三点还不能睡觉就为了弄这个问题 求帮忙::doge:: 万分感激

1356 次点击
所在节点    问与答
3 条回复
lecher
2016-01-17 05:25:20 +08:00
所有 Web 框架的路由规则都建议最长路径的正则放前面。因为路由规则是顺序执行的。
把带 html 的二级路由规则放一级页面前。
此外并不建议单靠 Web 框架路由实现这个功能。可以考虑把这个正则放到 Apache 、 Nginx 之类的进行处理。
lxjsmdc
2016-01-17 10:56:00 +08:00
我也想知道
chaegumi
2016-01-17 20:40:08 +08:00
都指到同一个 controller 的同一个 function ,就可以做了,不要局限在路由中

同一个 function ,里边就可以先查类别,后查文章

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251290

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX