通过/config/routes.php路由不正确

时间:2013-09-30 09:00:49

标签: php codeigniter

我在基于CI的网络应用程序中设置了以下(基本)路线:

$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2';

控制器+'重新发送'方法:

class Sms extends CI_Controller {
    public function resend($to, $message) {
        // my code
    }
}

从逻辑上讲,任何不符合路线的内容都应该指向404页面而不是resend()控制器中的sms方法。然而,事实并非如此。例如,以下URL未正确重定向,它将转到相同的控制器+方法:

http://myapp/sms/resend/uuuu/WhateverMessage

可能是什么问题?

3 个答案:

答案 0 :(得分:0)

经过一番挖掘后,我逐渐明白,当添加与特定controller/method对相关的默认路由时,CI的默认路由不会被取消激活。话虽这么说,如果URL不适合路由$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2',那么相同的URL作为回退通过CI的默认路由机制运行,所以它仍然需要我resend方法的sms 1}}控制器。为了防止这种情况发生,我需要添加另一个自定义路由,该路由跟随与sms重新发送相关的所有其他路由,将任何其他URL重定向到不同的控制器+方法。如果此控制器不存在,则会获得默认的404页面。 所以最后的/config/routes.php文件:

$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2';
$route['sms/checkoperator/(:num)'] = 'sms/checkoperator/$1';
$route['sms/(:any)'] = 'somewhereovertherainbow';

答案 1 :(得分:-1)

您的路线

$route['sms/resend/(:num)/(:any)'] = 'sms/resend/$1/$2';

url必须指向有效号码[0-9]

http://myapp/sms/resend/{!!!NUMBER!!!}/WhateverMessage

答案 2 :(得分:-2)

我认为路径文件只是用于重新路由。您的网址不符合路由条件,因此不会重新路由!所以这是正常的方式(在这种情况下!)

这样的事情可行!

(!:num)/(:any)'] =错误页面(或不是现有页面)

因此,每个以数字开头的请求都会被重定向到错误页面!

语法可能有误!

这会很棒:

$ route ['sms / resend / [^ 0-9] /(:any)'] ='errorpage'; 您必须通过某些内容替换错误页面;)