Codeigniter route regex - соответствует любой строке, кроме 'admin' - PullRequest
4 голосов
/ 24 февраля 2012

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

Решение, как я понимаю, похоже, используетНегативный взгляд в регулярном выражении.Итак, моя попытка выглядит так:

$route['(?!admin).*'] = "event";

.., которая работает.Ну вроде.Он отправляет любой неадминистративный запрос моему контроллеру «событий», но мне нужно, чтобы он передавал фактическую строку, которая была сопоставлена: так / my-new-event / направляется в / событие/ my-new-event /

Я попробовал:

$route['(?!admin).*'] = "event/$0";
$route['(?!admin).*'] = "event/$1";
$route['(?!admin)(.*)'] = "event/$0";
$route['(?!admin)(.*)'] = "event/$1";

... и несколько других все более случайных и отчаянных перестановок.В результате получается страница 404.

Какой правильный синтаксис для передачи согласованной строки в контроллер?

Спасибо:)

1 Ответ

9 голосов
/ 24 февраля 2012

Я не думаю, что вы можете сделать "отрицательную маршрутизацию".

Но так как маршруты имеют порядок: «маршруты будут выполняться в том порядке, в котором они определены. Более высокие маршруты всегда будут иметь приоритет над более низкими». Я бы сначала сделал мой админ, потом что-нибудь еще.

Если я полагаю, что ваш путь администратора выглядит как "/ admin / ...", я бы предложил:

$route['admin/(:any)'] = "admincontroller/$1";
$route['(:any)'] = "event/$1";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...