Мультиязычность в CodeIgniter

Sanu0074
На сайте с 31.08.2012
Offline
110
613

Делаю мультиязычный сайт на CI.

так вот выглядит routes.php (часть его):

$route['([^ru]|[^en])/(:any)'] = "main/setLang";

$route['(ru|en)'] = $route['default_controller'];
$route['(ru|en)/(:any)'] = "$2";

т.е. всегда после домена, 1й сегмент урла это код языка - иначе быть не может. И строка "$route['([^ru]|[^en])/(:any)'] = "main/setLang";" говорит о том что если код языка не равен ru или en, то нужно тут же перенаправить юзера на страницу main/setLang где присвоится нужный сегмент. Например заходим на site.com/de/page-abc - нас перенаправляет на site.com/main/setLang, тут же определятся язык из юзер агента или присваивается язык по умолчанию, и перенаправляет уже на (к примеру): site.com/ru/page-abc

Проблема в том что этот код не пашет, в данном случае если первый сегмент ru или en - то все работает как надо, а вот если de - то получаем 404! И так же если просто зайти на site.com/ - должно было перенаправить на site.com/main/setLang - но этого не происходит, и даже не выдает ошибку, а просто грузится главный контроллер!

В чем здесь ошибка? Я так подозреваю здесь: $route['([^ru]|[^en])/(:any)'] = "main/setLang"

И вообще, как правильно организовать решение такой задачи на codeigniter?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий