【发布时间】:2017-12-06 18:27:08
【问题描述】:
我在使用 codeigniter 时遇到了一些问题。 我的路由文件如下:
$route['admin/newgallery'] = 'gallery/do_upload';
$route['admin/listgallery'] = 'gallery/list';
$route['admin/create'] = 'posts/create';
$route['admin/listposts'] = 'posts/list';
$route['admin'] = 'admin/index';
$route['posts/(:any)'] = 'posts/view/$1';
$route['posts'] = 'posts/index';
$route['default_controller'] = 'pages/index';
$route['(:any)'] = 'pages/index/$1';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
除前两条外,所有路线都可以正常工作:
$route['admin/newgallery'] = 'gallery/do_upload';
$route['admin/listgallery'] = 'gallery/list';
当我输入mypage/admin/listgallery 时,它会正确调用gallery/list。问题是当我使用原始控制器/方法(在本例中为画廊/列表)键入地址时,它也会进入列表页面,而它应该调用 404 错误!我设置的所有其他路由规则都是这样做的,除了前两个!
【问题讨论】:
-
解释什么是“原始控制器/方法”。
-
我的意思是 mysyte/admin/listgallery 和 mysyte/gallery/list 进入列表页面,而 mysyte/gallery/list 应该进入错误页面!
-
您的假设不正确-如果您有直接调用的控制器/方法,那么它当然会起作用。它与路由无关。您似乎认为路由神奇地覆盖了正常操作,正如您所观察到的,事实并非如此。那么,您认为您正在努力实现的目标是什么?
-
如果你想覆盖原来的控制器/方法/参数调用,你应该使用 Apache(通常是 .htaccess)文件。检查重写和重定向规则。
-
routes.php文件是用来设置自定义路由的吧?如果我的假设不正确,这个文件就完全没用了!
标签: codeigniter routing codeigniter-3