这是用户控制器编写的电子邮件激活链接
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/$1/$2';
错误
An Error Was Encountered
The URI you submitted has disallowed characters.
如果我像这样运行uri那很好
http://www.some.com/user/activate_user/activate_user/1111/90101001010
为什么不接受电子邮件ID?
答案 0 :(得分:2)
应该是:
$route['user/([\w+-]+)(\.[\w+-]+)*@([a-zA-Z\d-]+\.)+[a-zA-Z]{2,6}/(:any)']
整个字符串是没有分隔符或修饰符的正则表达式。您正在使用分隔符,修饰符,并且还使用^
和$
。
答案 1 :(得分:1)
请检查您的配置文件,您在网址中允许使用哪些字符。默认情况下它看起来像:
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';
如果您想进一步需要,请访问链接Url Guideline by ellislab
答案 2 :(得分:1)
这有效
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-';
$route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2'; –
答案 3 :(得分:0)
转到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/$1/$2';
有了这个
$route['user'] = 'user';
$route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2';
<强>加强>
答案 4 :(得分:0)
这对我有用
的config.php
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_@-';
router.php
$route['user/activate_user/(:any)/(:any)'] = 'user/activate_user/$1/$2';