Маршрутизация регулярного выражения Codeigniter

У меня проблема с такой маршрутизацией:

$route['(/[az]{2}/)'] = 'locale/somepage'; 

И в .htaccess

 RewriteEngine on RewriteBase / RewriteRule ^(/[az]{2}/)$ /index.php/locale/somepage 

Мне нужно заменить первый раздел url (класс или контроллер) и вызвать другой контроллер. Например, мне нужно указать URL-адрес, поскольку / en / page будет вызывать локаль контроллера, но URL-адрес не нужно изменять.

Этот код не работает. И если я пытаюсь использовать только route.php или только .htaccess, он тоже не работает. Как я могу заставить его работать?

Я думаю, что вы неправильно написали правило regexp htaccess. Вам не нужно писать это как правило PHP регулярного выражения, попробуйте переписать его без косой черты в htaccess:

 RewriteRule ^([az]{2})/page$ /index.php/locale/somepage 

Это отправит любую http://mypage.com/en/page в index.php / locale / somepage.

С этим правилом CI получит url index.php/locale/somepage . В этот момент CI отправится на routes.php и проверит, есть ли какое-либо правило для вызова определенного контроллера. Если нет, он попытается перейти к контроллеру с именем locale , чтобы загрузить метод с именем somepage .

Таким образом, вам не нужно использовать routes.php для повторного изменения URL-адреса Apache, который вы получаете для вызова другого контроллера.