правила маршрутизации codeigniter - что я делаю не так? - PullRequest
0 голосов
/ 03 марта 2012

Пожалуйста, посмотрите, что находится в моем файле codeigniter config / rout.php:

$route['default_controller'] = "primary";
$route['404_override']    = '';

$route['(:any)']              = 'primary';
$route['login']               = 'login';
$route['admin']               = "admin";
$route['admin/(:any)']    = 'admin/$1';

Итак, я хочу, чтобы практически любой запрос страницы был направлен на мой «основной» контроллер, где он будет обрабатываться функцией index (). Есть несколько исключений; логин переходит в логин, админ в админ. Это все работает нормально. Проблема заключается в последнем правиле, которое не работает должным образом; 'admin / what' просто перенаправляется обратно на мой основной контроллер. Почему?

Я бы на самом деле хотел бы направить любые запросы администратора нормально, поэтому admin / что угодно / переходит к admin / что угодно / и admin / что угодно / что угодно / переходит к admin / что угодно / что угодно / . Сегментов может быть много, и их слишком много, чтобы перечислить отдельные правила (необходимы как исключения из первого $ route ['(: any)'] = 'primary'; rule). Есть ли способ сделать это?

Я довольно новичок в codeigniter, поэтому извиняюсь, если ответы очевидны. Я провел последние несколько часов в поисках ответов, но не могу найти ни одного.

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Я был глуп. Правила должны быть упорядочены в порядке приоритета, у меня был маршрут переадресации (: любой) до маршрутов входа в систему и администрирования, поэтому маршрут всегда шел к основному контроллеру и никогда не достигал других моих маршрутов, поскольку это было сопоставлено первым.

Маршруты также должны быть упорядочены по количеству сегментов, поэтому «admin / (: любой)» должен предшествовать «admin». В правиле «admin / (: any)» (: any) может относиться к любому числу последующих сегментов.

Теперь у меня есть:

$route['admin/(:any)']          = 'admin/$1';
$route['login/(:any)']          = 'login/$1';
$route['login']                     = 'login';
$route['admin']                     = "admin";
$route['(:any)']                    = 'primary';

и работает нормально.

0 голосов
/ 03 марта 2012

Если вы не хотите переписать администратора / что-нибудь еще, удалите последнее правило и администратор / все, что нужно, перейдите к администратору / что угодно, если у вас есть функция в контроллере администратора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...