CodeIgniter动态URL配置异常:自定义路由无法正常匹配求助
解决CodeIgniter路由匹配异常的问题
嘿,我一眼就看出问题出在哪了——CodeIgniter的路由是按从上到下的顺序匹配的,你把那个匹配所有请求的通配路由$route['(.*)']放在了最前面,这就导致后面的login-registration路由规则根本没机会生效,所有请求都被先匹配到了data/$1这个规则里。
而且我注意到你写的路由里有个拼写错误:login-resgistration应该是login-registration(少了个t),这个也得修正,不然就算顺序对了也匹配不上。
给你调整后的正确路由配置:
// 先放具体的路由规则,确保优先匹配 $route['login-registration'] = 'f/login/index'; // 通配路由放在最后,处理其他未匹配的请求 $route['(.*)'] = 'data/$1';
另外,关于你提到的把www.mydomain.com/data/2改成www.mydomain.com/name-data的需求,你还需要单独加一条对应的路由规则,同样放在通配路由前面:
$route['name-data'] = 'data/2'; $route['login-registration'] = 'f/login/index'; $route['(.*)'] = 'data/$1';
这样配置后:
- 访问
www.mydomain.com/login-registration会正确跳转到f/login/index控制器方法 - 访问
www.mydomain.com/name-data会跳转到data/2 - 其他像
www.mydomain.com/anotherword这类未匹配的请求,才会走data/$1的规则
记住一个核心原则:具体的路由规则永远要放在通配/模糊匹配的规则前面,不然通用规则会把所有请求都拦截掉。
内容的提问来源于stack exchange,提问作者user7474611
相关产品推荐
相关产品推荐

