개발 Q&A

제목 CI 다중도메인 연결
카테고리 PHP
글쓴이 mofy 작성시각 2018/01/25 16:26:34
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15744   RSS

안녕하세요 구글링도 해보고 요기 포럼에서 뒤져서 찾아보기는 했는데 해결방법을 못찾아서 질문을 올립니다. 

개발상황은 아래와 같습니다. 

1. server: id.cafe24.com hosting -> x.com이 대표도메인 

2. 연결하고자 하는 도메인 a.com, b.com, c.com, d.com (cafe24.com에서는 이미 해당 호스팅 서버로 4개의 도메인을 연결해놓음)

 

구현하고자 하는 것은 특정 컨트롤러/메서드를 도메인별로 매핑하는 것입니다. 

a.com --> application/controller/folder_a/controller_a/home

b.com --> application/controller/folder_b/controller_b/home

c.com --> application/controller/folder_c/controller_c/home

d.com --> application/controller/folder_d/controller_d/home

 

질문1) config.php에서 $config['base_url']은 다음과 같습니다. 

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");

$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];

$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);

이런 상황이라면, x.com, a.com, b.com, c.com, d.com으로 접속하는 경우 $route['default_controller'] 에 있는 컨트롤러가 보여야하는게 맞지 않을까요?(5개 도메인이 모두 id.cafe24.com 서버와 연결되어 있으므로)

 

질문2) 컨트롤러별 도메인을 다르게 매핑하는 과정에서 구글링에서 찾은 소스는 아래와 같습니다(주로 서브도메인...)

방법1) 서브도메인(출처: CI 포럼)

if ($_SERVER['SERVER_NAME'] == 'admin.도메인.com') {    $route['(.+)'] = "admin/$1"; }

 

방법2) 서브도메인으로 했던걸 제가 도메인부분만 수정

(출처: http://motive.tistory.com/entry/Codeigniter-Subdomain-%EA%B4%80%EB%A6%AC%EC%A7%80-Subfolder%EB%A1%9C-%EB%9D%BC%EC%9A%B0%ED%8C%85)

switch ( $_SERVER['HTTP_HOST'] ) { 

case 'a.com':

         $route['default_controller'] = 'folder_a/controller_a/home'; 

         break; 

case 'b.com':

         $route['default_controller'] = 'folder_b/controller_b/home'; 

         break; 

case 'c.com':

         $route['default_controller'] = 'folder_c/controller_c/home'; 

         break; 

case 'd.com':

         $route['default_controller'] = 'folder_d/controller_d/home'; 

         break; 

default: 

         $route['default_controller'] = 'welcome';

         $route['404_override'] = '';

         $route['translate_uri_dashes'] = FALSE;

 

break; 

}

 

 

문제는 저 2가지방법으로 해봤는데 안됩니다. ㅠㅠㅠㅠㅠ

이 문제좀 해결해주세요...ㅠㅠ...

 

 

이걸 하는 이유는 도메인포워딩으로 해결될 수 있는데, cafe24.com의 경우 도메인 고정포워딩을 iframe으로 처리해서 반응형 사이트가 망가집니다(유동포워딩하면 사이트는 잘보이지만 주소가 변경되서 안되구요)

블루웹의 경우 고정포워딩해도 iframe처리를 하지 않는지 사이트가 안망가지는데...

최악의 경우 도메인관리를 모두 블루웹으로 옮겨야할것 같습니다.

근데 CI 자체적으로 이걸 해결할 수 있는지 궁금합니다. 

태그 다중도메인,route
 다음글 이런 형식의 코딩은 비효율적일까요? (3)
 이전글 http curl timeout (3)

댓글

변종원(웅파) / 2018/01/26 09:41:39 / 추천 0

도메인별로 application 디렉토리를 따로 쓰는 방법이 더 간단합니다.

application 디렉토리를 도메인별로 만들고 index.php에서 application 디렉토리를 도메인별로 분기해주시면 됩니다.

mofy / 2018/01/26 10:58:26 / 추천 0

댓글 감사합니다 .

application 디렉토리를 따로 쓴다하심은 도메인별로 application 디렉토리를 여러개를 쓴다는 의미인거죠?

보통은 CI를 설치하면 

application, system 이렇게 생기는 디렉토리를 

application_a, application_b, application_c, application_d, system 요런식으로 구성하는건가요?

이후에 root에 있는 index.php에 

도메인별로 application 디렉토리를 지정해주라는 말씀이신거죠?

(제가 잘 이해를 했나요? ㅋㅋ)

혹시 도메인별로 분기하는 방법을 알려주실 수 있을까요?^^ 물론 저도 열심히 구글링해보겠습니다~^^

감사합니다. 

 

mofy / 2018/01/26 11:04:01 / 추천 0

요렇게 나오는게 있긴하네요(출처: http://minkine.blogspot.kr/2015/02/blog-post.html?m=1)

switch($_SERVER['HTTP_HOST'])
 {
  case('www.a.com') :
   $application_folder = 'www.a.com';
  break;
  case('www.b.com') :
   $application_folder = 'www.b.com';
  break;
  case('www.c.com') :
   $application_folder = 'www.c.com';
  break;
  default :
   $application_folder = 'application';
 }

 

요렇게만 하고 view 폴더, system 폴더는 언급이 없는데 디폴트로 사용해되 되겠죠? 일단 해보고 다시 글 달겠습니다

 

mofy / 2018/01/26 11:22:43 / 추천 0

도메인별로 application 분기해서 성공했습니다!! ㅋㅋㅋㅋ

감사합니다~