Codeigniter 路线未按预期工作
Codeigniter routes not working as expected
我很困惑,因为这方面的文档非常简单明了,我一定是遗漏了什么。
我有一个控制器,我可以像这样使用 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';
我不确定我是否理解,但假设你的控制器是 usermanager
,你必须指定组应该在哪里:
$route['/users/(:any)'] = '/usermanager/';
所以,如果一个请求是 /users/testing
就会像 /usermanager/testing
确保使用 Codeigniter 提供的 .htaccess 文件并将其放置到根应用程序中。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
另存为 .htaccess
路由的逻辑是。您将 Welcome.php 作为默认控制器。如果您要路由自定义控制器,请执行以下操作。
$route['default_controller'] = 'welcome' //where execute the Welcome/index
示例:
$route['login'] = 'Auth/login'
您只需调用登录到您的 url,它将动态执行 Auth/login。
Codeigniter 大多数人使用这 3 种类型的路线
//简单路线
$route['login'] = 'Login/index';
//通过id或number的路由
$route['product/(:num)'] = 'catalog/product_lookup_by_id/';
// 通过任意路由
$route['product/(:any)'] = 'catalog/product_lookup';
// 在路由中传递 moulte 值
$route['product/(:any)/(:any)'] = 'catalog/product_lookup';
删除路由中的前导斜线。
改变这个
$route['/users/(:any)'] = '/usermanager';
至此
$route['users/(:any)'] = 'usermanager';
我很困惑,因为这方面的文档非常简单明了,我一定是遗漏了什么。
我有一个控制器,我可以像这样使用 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';
我不确定我是否理解,但假设你的控制器是 usermanager
,你必须指定组应该在哪里:
$route['/users/(:any)'] = '/usermanager/';
所以,如果一个请求是 /users/testing
就会像 /usermanager/testing
确保使用 Codeigniter 提供的 .htaccess 文件并将其放置到根应用程序中。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/ [L]
另存为 .htaccess
路由的逻辑是。您将 Welcome.php 作为默认控制器。如果您要路由自定义控制器,请执行以下操作。
$route['default_controller'] = 'welcome' //where execute the Welcome/index
示例:
$route['login'] = 'Auth/login'
您只需调用登录到您的 url,它将动态执行 Auth/login。
Codeigniter 大多数人使用这 3 种类型的路线
//简单路线
$route['login'] = 'Login/index';
//通过id或number的路由
$route['product/(:num)'] = 'catalog/product_lookup_by_id/';
// 通过任意路由
$route['product/(:any)'] = 'catalog/product_lookup';
// 在路由中传递 moulte 值
$route['product/(:any)/(:any)'] = 'catalog/product_lookup';
删除路由中的前导斜线。
改变这个
$route['/users/(:any)'] = '/usermanager';
至此
$route['users/(:any)'] = 'usermanager';