так как я хочу разделить интерфейс и бэкэнд системы. Я создал 2 папки внутри контроллеров в качестве интерфейса и бэкэнд
Ниже приведена структура моей папки контроллера
controller --frontend ---store.php ---processing.php ---profile.php ---authenticate.php ---register.php --backend ---authenticate.php ---stats.php ---users.php ---property_manage.php ---register.php
я могу получить доступ к функциям, используя
frontend/store/add frontend/store/manage ...... backend/stats/sales backend/stats/payments .....
но я хочу снять интерфейс и сегменты бэкэнда с URL.
Я проверил функцию маршрутизации в codeigniter, но, по моим сведениям, мне нужно индивидуально указать каждый маршрут. Поскольку у меня около 12 контроллеров, и каждый из них имеет около 10-15 функций, мне может потребоваться указать каждую функцию на маршрут.
есть ли другой эффективный способ достижения маршрутизации или любым другим способом? (без использования htaccess)
Сделай это:
$route['store/(:any)'] = 'frontend/store/$1'; $route['processing/(:any)'] = 'frontend/processing/$1'; $route['profile/(:any)'] = 'frontend/profile/$1';
То же самое для бэкэнд:
$route['backend/(:any)'] = 'backend/authenticate/$1';
Вам не нужно создавать каждое правило в routes.php для каждой функции контроллера, но достаточно одного правила для каждого контроллера, как указано выше.
Маршрутизация URI: руководство пользователя CodeIgniter
$1
представляет первое выражение, здесь (:any)
– это выражение, вы можете иметь несколько выражений для каждого правила, а выражение представлено как $1
, $2
и т. Д. С другой стороны.
Аналогично, (:num)
будет соответствовать сегменту, содержащему только числа, (:any)
будет соответствовать сегменту, содержащему любой символ, (\d+)
будет соответствовать любой цифре, ([az]+)
будет соответствовать любому альфа-тексту.
Вы должны как-то отличать интерфейс от бэкэнда. Возможно, задайте маршрут, который перенаправляет любой uri с «admin» на бэкэнд, и что угодно, без «admin» в интерфейс.
Для Front-End вы можете добавить это в route.php:
$this->set_directory( "frontend" );
поэтому в URL-адресе браузера нет необходимости включать «frontend»,