我已经在routes.php上定义了一条新路线,但它有问题。
$route['default_controller'] = "index";
$route['404_override'] = '';
$route['(:any)'] = "oyna/oyun/$1";
我想将/2012.htm重定向到oyna / oyun / 2012.htm,但我可以创建一个新问题。如果我没有定义如下,我无法联系到我的其他控制器:
$route['default_controller'] = "index";
$route['404_override'] = '';
$route['admin/(:any)/(:any)'] = 'admin/$1/$2';
$route['admin/(:any)'] = 'admin/$1';
$route['kategori/(:any)'] = "oyna/kategori/$1";
$route['(:any)'] = "oyna/oyun/$1";
如果我没有像上面那样在routes.php上定义任何控制器,我无法达到。 我需要做些什么来解决?
答案 0 :(得分:2)
我不确定,但尝试将$route['(:any)'] = "oyna/oyun/$1";
替换为$route['(:num).htm'] = "oyna/oyun/$1.htm";
或更好:$route['(\d+).htm'] = "oyna/oyun/$1.htm";
答案 1 :(得分:0)
CodeIgniter的路线有点滑稽,但是一旦你理解了它们的处理方式,它就非常有意义。
由于路由使用正则表达式匹配,因此您不能只使用超级通用的东西并期望其他所有内容都能正常工作,因为它会在简单地路由到URL隐含的控制器/方法之前查看路由。
如果您希望匹配http://domain.tld/2njkf4r
和http://domain.tld/pages/about
等网址,则必须创建更具体的规则来处理与第一种情况相匹配的一般规则的“例外”。
除非你定义其他路由,否则它是行不通的,因为只有$route['(:any)']
作为路由,每个请求都会匹配。那条路线必须是你绝对的最后路线。这是一个痛苦的屁股,但是必要的,因为他们处理路线的方式。
答案 2 :(得分:0)
我的所有链接都在.htm结束了。这就是解决方案:
$route['(:any).htm'] = "oyna/oyun/$1";
因为我的控制器最后没有.htm。