我在codeigniter中有以下路线:
$route['register/new/user/from=(:any)'] = "auth/user/register/index/$1";
$route['default_controller'] = "defaultcontroller";
$route['404_override'] = '';
我的控制器文件夹中也有这样的层次结构:
auth
|-------admin
|-------member
|-------user
|----register.php
|----tester.php
当我尝试访问http://host/index.php/auth/user/register/index/
或http://host/index.php/register/new/user/from=www.google.com
时,它会抛出404未找到错误。
我该怎么办?
如果代码在索引方法中,则可以使用此行代码
$route['register/new/user/from/:any']="auth/user/register/index/$1";
您应该将auth/user/register/index/$1更改为register/new/user/from/:any或register/new/user/:any,并使用段(4)
$route['register/new/user/(:any)'] = "auth/user/register/index/$1";
或
$route['register/new/user/from/(:any)'] = "auth/user/register/index/$1";
https://www.codeigniter.com/user_guide/general/routing.html
您的URL格式本身存在问题;您应该规范化您的URL。
http://en.wikipedia.org/wiki/URL_normalization
不能在规范化URL中的段中使用等于"="的符号。
您可以在查询字符串中使用"="符号。
所以不是
http://host/index.php/register/new/user/from=www.google.com
(错误/未规范化)
尝试:
http://host/index.php/register/new/user/?from=www.google.com
(正确:查询字符串)
或者:
http://host/index.php/register/new/user/from%3Dwww.google.com
(正确但不推荐:URI编码字符串)
或者:
http://host/index.php/register/new/user/from/www.google.com
(正确:分离段)
你可以用捕捉最后一个
$route['register/new/user/from/(:any)'] = "auth/user/register/index/$1";