Маршрутизация URL-адресов CodeIgniter — URL, дружественный к SEO

#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-адрес для администратора является:

http://mydomain.com/admin

Что я добавлю в файл 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.