Мы используем библиотеку Codeingiter i18n (ссылка на сайт) создать многоязычный сайт.
До этого у нас был, например, www.thedomain.com/register, а регистрация была функцией в нашем контроллере. Теперь, когда мы помещаем эту библиотеку, она берет домен, языковую строку, имя контроллера и имя функции: www.thedomain.com/es/homegf/register (где homegf — наш контроллер).
Мы хотим, чтобы этот URI работал без имени нашего контроллера (www.thdomain.com/es/register), как в примерах библиотеки, но мы думаем, что проблема в нашем маршруте.
Это то, что мы имеем в маршрутах.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$route['default_controller'] = "homegf";
$route['404_override'] = '';
$route['^(en|es|de)/(.+)$'] = "$2";
$route['^(en|es|de)$'] = $route['default_controller'];
Это наш .htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|files|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Вы можете найти наш код для просмотра на https://bitbucket.org/ticketcomunicacion/grinfood/src/17ddde60e340a1f2bc389f54ec579e1e903ee86b?at=multilenguaje
Как я понимаю, вы хотите URL контроллера без имени контроллера.
если вы хотите изменить URL с вашего контроллера имя на другое,
в вашем rout.php напишите следующее
$route['homegf/register'] = "register";
и вы можете получить доступ
domain.com/es/register
Проблема была в наших маршрутах.
Вот как нам удалось заставить его работать:
$route['^es/(.+)$'] = "homegf/$1";
$route['^en/(.+)$'] = "homegf/$1";
$route['^es$'] = $route['default_controller'];
$route['^en$'] = $route['default_controller'];
$route['(:any)'] = 'homegf/$1';