Codeigniter路由未按预期工作

时间:2019-07-15 19:15:42

标签: php codeigniter routing codeigniter-3

我很困惑,因为有关此文档的文档非常简单明了,我必须缺少一些东西。

我有使用routes.php路由到的控制器,

$route['users'] = '/usermanager'; 这可以按预期工作,导航到mysite/users会呈现我的控制器。

我有一些前端路由来处理用户页面上的不同选项卡,因此url可以具有一些子路由,例如/users/management。逻辑全部在前端处理,我需要/users下的任何内容路由到同一控制器

所以我这样写: $route['/users/(:any)'] = '/usermanager';

这失败,我被定向到404页面。 我也尝试过明确指定路线: $route['/users/management'] = '/usermanager';

仍然没有骰子。我对这个路由功能不了解什么。

这里有我完整的routes.php,以防我丢失了一些东西:

$route['default_controller'] = 'EdgeView';
$route['404_override'] = 'PageNotFound';
$route['translate_uri_dashes'] = FALSE;

$route['view'] = '/';
$route['list'] = '/';
$route['pictorial'] = '/';
$route['certificate'] = '/';
$route['files'] = '/';
$route['about'] = '/';
$route['contact'] = '/';

$route['users'] = '/usermanager';
$route['/users/(:any)'] = '/usermanager';

4 个答案:

答案 0 :(得分:1)

删除路线中的前导斜线。

更改此

$route['/users/(:any)'] = '/usermanager';

对此

$route['users/(:any)'] = 'usermanager';

答案 1 :(得分:0)

我不确定是否理解,但是假设您的控制器是 <Link className="link-apply" to={{pathname: `/job/${job._id}`, state: job }}> <p className="place">{job.workplace_name}</p> <p className="location-job">{job.location}</p> </Link> ,则必须指定组的位置:

usermanager

因此,如果请求为$route['/users/(:any)'] = '/usermanager/$1'; ,则类似于/users/testing

答案 2 :(得分:0)

确保您使用Codeigniter提供的.htaccess文件,并将其放置到您的根应用中。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

另存为.htaccess

路由的逻辑是。您将 Welcome.php 作为默认控制器。如果要路由自定义控制器,请执行以下操作。

$route['default_controller'] = 'welcome' //where execute the Welcome/index

示例:

$route['login'] = 'Auth/login'

您只需将登录名调用为您的URL,它将动态执行 Auth / login

答案 3 :(得分:-1)

Codeigniter大多数Pepole使用了这3种路线

//简单路线

$route['login'] = 'Login/index';

//通过具有ID或编号的路由

$route['product/(:num)'] = 'catalog/product_lookup_by_id/$1';

//通过任何路线

$route['product/(:any)'] = 'catalog/product_lookup';

//在路径中传递摩尔值

$route['product/(:any)/(:any)'] = 'catalog/product_lookup';