0
votes

I am trying to set up a routing mechanism in CodeIgniter. Except some controllers like admin, I want to route requests to my default controller.

I tried following:

$route['default_controller'] = 'pages';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route["([^\\<(admin|login)\\>+-])/"] = 'pages/get/en/$1';
$route["([\\<(admin|login)\\>+-])/"] = 'pages/get/en/$1';
$route['(:any)'] = 'pages/get/en/$1'; // line_1
$route['(:any)/(:any)'] = 'pages/get/$1/$2'; // line_2

$route['admin'] = 'admin';

If i comment line_1 and line_2 line, admin url goes to admin but index gives 404. If I uncomment them, Admin link goes to pages controller.

1

1 Answers

0
votes

I figured out that it is a problem about case sensitivity.

I tried this and it worked:

if ($default_lang == "") $default_lang = "en";

$route['default_controller'] = 'pages';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

$route['(?i)Admin'] = 'admin';
$route['(?i)Admin/(:any)'] = 'admin/$1';

$route['(?i)News/(:any)'] = 'news/get/' . $default_lang . '/$1';
$route['(?i)News/(:any)/(:any)'] = 'news/get/$1/$2';

$route['(:any)'] = 'pages/get/' . $default_lang . '/$1';
$route['(:any)/(:any)'] = 'pages/get/$1/$2';