在 codeigniter 中路由包含电子邮件的 URI

routing URI containing email in codeigniter

这是在用户控制器

中编写的电子邮件激活link

http://www.some.com/user/activate_user/user@gmail.com/90101001010

我想为此写路线。

我尝试了下面的那个,但是它

// USER POST
$route['user'] = 'user';
$route['user/activate_user/:any/:num'] = 'user/activate_user//';

错误

An Error Was Encountered

The URI you submitted has disallowed characters.

如果我运行这样的uri就好了

http://www.some.com/user/activate_user/activate_user/1111/90101001010

为什么不接受电子邮件 ID?

应该是:

$route['user/([\w+-]+)(\.[\w+-]+)*@([a-zA-Z\d-]+\.)+[a-zA-Z]{2,6}/(:any)']

整个字符串是一个没有分隔符或修饰符的正则表达式。您放置了定界符、修饰符,还使用了 ^$.

请检查您的配置文件,url 中允许使用哪些 uri 字符。默认情况下它看起来像:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

如果您需要进一步的需求,请访问 link Url Guideline by ellislab

转到config.php

查找$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

并添加$config['permitted_uri_chars'] = 'a-z 0-9~%.:_()@&\-!';

并停止和/或刷新服务器

替换这个

$route['user'] = 'user';
$route['user/activate_user/:any/:num'] = 'user/activate_user//';

有了这个

$route['user'] = 'user';
$route['user/activate_user/(:any)/(:any)'] = 'user/activate_user//';

已添加

Tutorial Email Activation

这对我有用

config.php

 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-'; 

router.php

 $route['user/activate_user/(:any)/(:any)'] = 'user/activate_user//';

这有效

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-';
$route['user/activate_user/(:any)/(:any)'] = 'user/activate_user//'; –