2017-12-21 21 views
-1

저는 여러 언어와 도시 웹 사이트로 CodeIgniter와 협력하고 있습니다. 경로 아래에 여러 언어의 벌금을하고있다 (URL = www.mywebsite.com/en/)두 세그먼트가있는 CodeIgniter 라우팅이 작동하지 않습니다.

/* 
| ------------------------------------------------------------------------- 
| Multilingual routing (use 2 characters (e.g. en, zh, cn, es) for switching languages) 
| ------------------------------------------------------------------------- 
*/ 
$route['^(\w{2})/(.*)$'] = '$2'; 
$route['^(\w{2})$'] = $route['default_controller']; 

그러나 www.mywebsite.com/en/del/ 같은 URL은 다음 경로가 작동하지 않습니다, 아래

내가 잘못
$route['^(\w{2})/^(\w{3})$'] = $route['default_controller']; 

, 어떤 생각과 같은 코드 ?

+0

이러한 변수가 컨트롤러의 메소드로 전달 되었습니까? 또한, 당신은 거꾸로 라우팅 것 같습니다. '$ route [$ variable]'에 값을 할당해야합니다. 귀하의 경우, 그것은 다음과 같아야합니다 : '$ route [ 'default_controller'] = $ route [ '^ (\ w {2})/^ (\ w {3}) $'];'.. .. 정규식이 발견 될 때 기본 컨트롤러가 활성화되어야한다고 말하면 않는 한. –

답변

1

정규 표현식이 올바르지 않기 때문에 ^은 문자열의 시작 부분을 표시하며 이처럼 중간에 사용할 수 없습니다. 대신 다음 코드를 사용해보십시오 (DEMO) :

$route['^(\w{2})/(\w{3})$'] = $route['default_controller']; 
+0

코드 $ route [ '^ (\ w {2})/(. *) $'] = '$ 2'을 제거하면 문제가 없습니다. 그렇지 않으면 작동하지 않습니다. – santanu

+0

OK,'$ route [ '^ (\ w {2})/(. *) $'] = '$ 2';' – mega6382