2012-02-24 3 views
4

관리 경로와 일치하지 않는 경로를 내 "이벤트"컨트롤러에 보내고 싶습니다. 이것은 꽤 일반적인 요구 사항 인 것처럼 보이며, 어리둥절한 검색은 모든 종류의 모든 것을 던졌습니다. similarquestions.Codeigniter route regex - 'admin'을 제외한 모든 문자열 일치

해결책은, 내가 알기 론, 정규식에서 부정적인 예측을 사용하는 것 같습니다. 그래서 내 시도는 다음과 같습니다.

$route['(?!admin).*'] = "event"; 

. 음, 일종의. 관리자가 아닌 모든 요청을 내 "이벤트"컨트롤러에 보내지 만 일치 한 실제 문자열을 전달해야합니다. 따라서 /my-new-event//event/my-new-event로 라우팅됩니다./

나는 시도 :

$route['(?!admin).*'] = "event/$0"; 
$route['(?!admin).*'] = "event/$1"; 
$route['(?!admin)(.*)'] = "event/$0"; 
$route['(?!admin)(.*)'] = "event/$1"; 

... 그리고 몇 가지 다른 점점 무작위 필사적 순열을. 모두 404 페이지가됩니다.

일치하는 문자열을 컨트롤러에 전달하기위한 올바른 구문은 무엇입니까?

감사 :

답변

9

"네거티브 라우팅"을 할 수 있다고 생각하지 않습니다.

하지만 경로에는 순서가 있습니다. "경로는 정의 된 순서대로 실행되며 높은 경로는 항상 낮은 경로보다 우선합니다." 내 관리자가 먼저 그 다음 다른 일을 할 것입니다. 나는 당신의 관리자 경로가 같은 찾고 가정하면

"/ 관리자는/..."나는 제안 :

실제로 작업을 수행
$route['admin/(:any)'] = "admincontroller/$1"; 
$route['(:any)'] = "event/$1"; 
+0

, 감사합니다. 이상한 점은 부정적인 일치가 일치하는 문자열을 전달하지 않는다는 것입니다.하지만 이는 일시적인 해결책으로도 유용합니다. – Wintermute