codeigniter路由规则严禁加开头斜杠,因系统自动剥离后按路径段前缀匹配;正确写法为$route['about'] = 'pages/view',末尾也不加斜杠,通配规则如$route['(:any)']须置于底部。

URL路由规则里不要加斜杠前缀,这是 CodeIgniter 路由配置的硬性要求。
为什么不能加开头斜杠
CodeIgniter 的路由匹配是基于 URL 路径段(segment)的前缀顺序匹配,不是完整路径或正则全量匹配。系统会自动剥离开头的 /,再逐段比对。如果你写成:
-
$route['/about'] = 'pages/view';→ 会被忽略或匹配失败 -
$route['/news/(:num)'] = 'news/show/$1';→ 实际不生效,应去掉开头斜杠
官方文档和实际测试都确认:所有路由键(即左侧的 URL 模式)必须以无斜杠形式书写。
正确写法示例
以下都是标准、可工作的格式:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
$route['about'] = 'pages/view';$route['news/(:num)'] = 'news/show/$1';$route['blog/(:any)'] = 'blog/post/$1';$route['admin/users'] = 'admin/users/index';
注意:末尾也不加斜杠;admin/users 和 admin/users/ 是两个不同规则,后者不会自动归一化。
容易混淆的几个地方
别把路由规则和 .htaccess 或 Nginx 配置搞混:
-
.htaccess里的重写规则(如RewriteRule ^(.*)$ index.php/$1 [L])确实处理带斜杠的原始请求,但那是 Web 服务器层,不影响routes.php写法 -
base_url()和site_url()输出的 URL 本身要带斜杠(比如http://localhost/myapp/),但这和路由定义无关 - 控制器方法接收的 URI 段(如
$this->uri->segment(1))也不含开头斜杠,和路由键保持一致
兜底规则特别注意
像 $route['(:any)'] = 'pages/view/$1'; 这类通配规则,同样不能写成 /(.+)' 或 /:any。它匹配的是任意非空路径段组合,例如访问 /contact、/help/faq/123 都会进入该路由,前提是前面没更具体的规则拦截。
顺序很重要:把它放在 routes.php 最底部,避免提前覆盖其他规则。










