#codeigniter #routing #seo
#codeigniter #маршруты #seo
Вопрос:
Я создал новый маршрут для своего сайта:
$route[‘default_controller’] = «добро пожаловать»;
$route[‘(:any)’] = «добро пожаловать/ индекс/$1»;
$route[‘404_override’] = «;
И это отлично работает на моем сайте, когда URL выглядит следующим образом:
http://mydomain.com/first-article
http://mydomain.com/second-article
* мой контроллер просто welcome.php
но
у меня также есть контроллер для администратора, а URL-адрес для администратора является:
Что я добавлю в файл routes, чтобы игнорировать /admin и другие контроллеры внутри администратора?
Ответ №1:
Вы можете заменить welcome/index/$1
маршрут на:
$route['^(?!admin).*'] = "welcome/index/$1";
В основном это говорит о том, что если URI, который не начинается с «admin», должен перенаправляться к методу приветствия / индекса и передавать содержимое методу индекса. В противном случае выполняйте обычную маршрутизацию с администратором, являющимся контроллером.
Комментарии:
1. спасибо за ответ, и это работает! .. но что, если я хочу добавить еще одно правило, скажем: если URI не начинается с «admin» и «users», он должен перенаправляться к методу welcome / index .. как бы я это сделал?
2. Просто добавьте его в маршруты, разделенные символом канала:
$route['^(?!admin|users).*'] = "welcome/index/$1";
— вы можете добавить столько, сколько вам нужно.
Ответ №2:
Открыть application/config/router.php и измените
$route['404_override'] = '';
Для
$route['404_override'] = 'router/index';
Вы можете использовать все контроллеры обычным способом.
Когда вы пытаетесь использовать несуществующий контроллер, вы должны перенаправить его на контроллер 404.
Создайте контроллер с именем Router.php как контроллер, структурированный для CodeIgniter.
В методе index внутри Router.php , запросите соответствующий URL-адрес sef и выполните необходимые операции. Все запросы, которые направляются на неопределенный контроллер, будут обрабатываться методом маршрутизатора / индекса. Другие будут перенаправлены на соответствующий контроллер, как обычно.
Возможно, вы захотите использовать коды заголовка, чтобы указать, что соответствующая страница не 404.