1
我配置了Codeigniter 2.1和i18n和擴展控制器。Codeigniter通過擴展控制器和多語言來最小化URL
我隱藏了主控制器「主」,我保持可見的「管理員」和「博客」控制器。
該網址工作正常:
www.mysite.com/ EN/functionname
www.mysite.com/ EN/博客/
這是我的問題: www.mysite.com/ it/博客/functionname
與主控制器 「博客」 一切 「/」 被忽略了。
可以做到這一點嗎?
我routes.php文件文件:
$default_controller = "main";
$language_alias = array('it','en');
// exceptions
$controller_exceptions = array('admin','blog');
// route
$route['default_controller'] = $default_controller;
$route["^(".implode('|', $language_alias).")/(".implode('|', $controller_exceptions).")(.*)"] = '$2';
$route["^(".implode('|', $language_alias).")?/(.*)"] = $default_controller.'/$2';
$route["^((?!\b".implode('\b|\b', $controller_exceptions)."\b).*)$"] = $default_controller.'/$1';
foreach($language_alias as $language) {
$route[$language] = $default_controller.'/index';
}
$route['404_override'] = '';
// URI like '/en/about' -> use controller 'about'
$route['^(it|en)/(.+)$'] = "$2";
// '/it', '/en' URIs -> use default controller
$route['^(it|en)$'] = $route['default_controller'];
如果我刪除郎在我的網址,一切工作正常:
www.mysite.com/ 博客/functionname
謝謝您的回覆,但它似乎不起作用。 我認爲問題在這裏: '$ route ['default_controller'] = $ default_controller;' '$ route [「^',$ language_alias)。」)/(「。implode ('|',$ controller_exceptions)。「)(。*)」] ='$ 2';' '$ route [「^',$ language_alias)。」)?/(。* )「] = $ default_controller。'/ $ 2';' '$ route [」^((?!\ b「.implode('\ b | \ b',$ controller_exceptions)。」\ b)。*)$ 「] = $ default_controller。'/ $ 1';' – simo
我改變了我的答案,我將默認設置移至頂部。它將永遠不會與底部的默認值一起工作。 – bottleboot
謝謝你的作品!我欠你一杯啤酒! – simo