Перенаправить в / en, если страница не найдена - PullRequest
0 голосов
/ 01 марта 2019

У меня есть в codeigniter веб с несколькими языками.Все в порядке, например https://example.com/en/mydetails.html

Но если я использую https://example.com/mydetails.html, я получаю ошибку.Я не знаю, нужно ли мне изменять .htaccess или в файле rout.php.

Мой файл rout.php имеет:

    $route['default_controller'] = 'home';
$route['404_override'] = 'notfound';
$route['translate_uri_dashes'] = true;

$route['^es$'] = $route['default_controller'];
$route['^en$'] = $route['default_controller'];
$route['^fr$'] = $route['default_controller'];
$prepended_lang = "(?:[a-zA-Z]{2}/)?";

И мой htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|aplication|admin|css|js|img\.php|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{HTTP_HOST} !^www\. [NC]

Спасибо

Я вижу ошибку здесь: https://monosnap.com/file/h2ubaFmjznLB96RSEEI1IplM69jwTK

1 Ответ

0 голосов
/ 01 марта 2019

Это конец конфигурации CI-маршрутов, может быть, вам может помочь:

//more than 2 chars on start uri segment
$route['^(\w{3,})\/?(:any)'] = '$1/$2';
//2 chars lang + /uri_segment
$route['^(\w{2})\/?(:any)'] = '$2';
//only 2 chars
$route['^(\w{2})$'] = $route['default_controller'];

Существует много версий CI, в моем случае CI 2.x, работающих с HMVC, контроллерами MX и т. Д. И т. Д.

CI 3 имеет некоторый способ работы с регулярными выражениями: https://www.codeigniter.com/user_guide/general/routing.html?highlight=routes#regular-expressions

Возможно, может работать что-то подобное, не проверено:

//more than 2 chars on start uri segment
$route['^([a-zA-Z]{3,})/(:any)'] = '$1/$2';
//2 chars lang + /uri_segment
$route['^([a-zA-Z]{2})/(:any)'] = '$2';
//only 2 chars
$route['^([a-zA-Z]{2})'] = $route['default_controller'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...