2012-07-05 5 views
1

CodeIgniter는 기본적으로 하나의 응용 프로그램 만 지원합니다. 하위 도메인을 기반으로 여러 응용 프로그램을 원합니다. 하위 도메인은 응용 프로그램 폴더 이름입니다. 존재한다면, 그것은 그 밖의 기본값을 실행해야합니다. 여기 내 요구 사항과 논리 간다 ...codeigniter 여러 응용 프로그램

요구 사항 :

http://dynamic.com    applications/application (default) 
http://appone.dynamic.com  applicatons/appone 
http://apptwo.dynamic.com  applicatons/apptwo 
....       .... 
http://appx.dynamic.com   applicatons/appx 

위의 같은 방문자 유형 예제 URL는, htaccess로 또는 index.php 파일이 자동으로 사용할 응용 프로그램 폴더를 선택해야 할 때.

codeIgniter 기본 코드를 index.php로 변경하고 잘 작동하는이 코드를 작성하십시오.

// multiple applications path // 
$path = 'applications/'; 
// default folder // 
$folder = 'application'; 

preg_match('/^(?<subdomain>\w+)\.(dynamic\.com)$/im', $_SERVER['HTTP_HOST'], $matches); 
if (isset($matches['subdomain']) && is_dir($path . $matches['subdomain'])) { 
    $folder = strtolower($matches['subdomain']); 
} 
$application_folder = $path . $folder; 

내 질문 - .htaccess에 같은 논리를 쓸 수 있습니까? index.php에 광산과 같은 코드를 작성하는 데 성능 문제가 있습니까? 나에게 제안하거나 htaccess 로직에 대한 도움. 이미지도 첨부되어 있습니다. 고맙습니다!!

enter image description here

답변

1

당신이 그것을하고있는 방법은 올바른 것입니다. CodeIgniter가 index.php 파일에서 사용할 응용 프로그램 폴더를 설정하고 있습니다.

성능면에서 유일한 관심사는 preg_match 함수와 is_dir 함수입니다. 필자의 견해로는 문자열이 다소 작아서 성능 위험이 너무 커서는 안됩니다. 그러나 switch() 문을 써서 is_dir 함수를 피할 수 있도록 더 하드 코딩되도록합니다. 이 방법을 사용하면 preg_match 함수 대신에 매우 저렴한 if 문을 사용하는 것으로 전환 할 수 있습니다.

.htaccess 파일에 이것을 써야하는 이유가 없습니다. CodeIgniter는 이것을 수행 할 수있는 기능을 제공합니다. .htaccess를 사용하여 이것을 사용하려면, symlink를 설치하고 시작하기 위해 별도의 폴더가 있어야합니다.

관련 문제