У меня проблема с такой маршрутизацией:
$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, который вы получаете для вызова другого контроллера.