CodeIgniter URL маршрутизация - SEO дружественный URL - PullRequest
1 голос
/ 08 ноября 2011

Я создал новый маршрут для своего сайта:

$ route ['default_controller'] = "welcome";

$ route ['(: any)'] = "welcome / index / $ 1";

$ route ['404_override'] = '';

И это прекрасно работает на моем сайте, когда URL выглядит следующим образом:

http://mydomain.com/first-article

http://mydomain.com/second-article

* мой контроллер просто welcome.php

но

У меня также есть контроллер для администратора и URL для администратора:

http://mydomain.com/admin

Что я добавлю в файл маршрутов, чтобы игнорировать / admin и другие контроллеры внутри администратора?

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Вы можете заменить маршрут welcome/index/$1 на:

$route['^(?!admin).*'] = "welcome/index/$1";

В основном это говорит о том, что если URI, который делает не , начинающийся с "admin", должен направить в welcome /метод index и передача содержимого в метод index.В противном случае обработайте обычную маршрутизацию, а администратором будет администратор.

0 голосов
/ 28 июня 2017

Откройте application / config / router.php и измените

$route['404_override'] = '';

до

$route['404_override'] = 'router/index';

Вы можете использовать все контроллеры как обычно.

Когда вы пытаетесь использовать контроллер, который не существует, вы должны направить его на контроллер 404.

Создайте контроллер с именем Router.php в качестве контроллера, структурированного для CodeIgniter.

В методе index внутри Router.php , запросите связанный sef url и выполните необходимые операции. Все запросы, которые направляются на неопределенный контроллер, будут обрабатываться методом router / index . Другие будут перенаправлены на соответствующий контроллер как обычно.

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

...