개발 Q&A

제목 디렉토리 내에 CI 두개 설치 못하나요??
글쓴이 반페르시 작성시각 2012/04/03 16:08:08
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 21771   RSS
 home이라는 디렉토리 아래 A와 B라는 디렉토리를 만들고 A, B 둘 다 Ci를 설치 했거든요.
그래서 A에 경로 설정하고 잘 접속되서 B에는 다른 경로로 설정했더니 B는 접속이 되질 않습니다.
무슨 문제가 있는건가요?? 아님 B도 따로 설정 잡아주어야 하나요??
고수님들 조언 좀 주세요 ㅠ
 다음글 codelgniter다운받아 압출풀고 나서 .. (1)
 이전글 로그인,회원가입 페이지만 https 적용하고 싶은데요~ (1)

댓글

인스카 / 2012/04/03 16:40:24 / 추천 0
home 상위가 루트여서
http://localhost/home/A
http://localhost/home/B

인 건가요,

home이 루트여서 
http://localhost/A
http://localhost/B

인건가요?


반페르시 / 2012/04/03 17:25:11 / 추천 0
 답변 감사합니다.

http://localhost/A
http://localhost/B

입니다. ㅠ-ㅠ
반페르시 / 2012/04/03 17:38:55 / 추천 0
답변 감사합니다.

http://2**.***.***.123/A
http://2**.***.***.123/B

입니다. ㅠ-ㅠ
변종원(웅파) / 2012/04/03 20:03:24 / 추천 0
디렉토리 다르게 하셨다면 설정도 다른게 맞습니다. 
완전히 다른 2개라고 보시면 됩니다.
milosz / 2012/04/07 16:16:29 / 추천 0
 만약 htaccess의 베이스룰을 디렉토리에 맞춰 수정 안해주셨다면
둘다 이상하게 출력되거나 출력 안되거나 할겁니다
mixiaoli / 2026/03/16 15:06:02 / 추천 0

CI 자체 문제라기보다 웹서버 경로 설정 + 각 설치본의 개별 설정 문제일 가능성이 큽니다.
A와 B에 CI를 각각 설치했다면, B도 A와 별도로 설정해주셔야 합니다. base_url()은 각 설치본의 config.php에 지정한 base URL 값을 기준으로 동작하고, Apache에서 다른 사이트/도메인을 나누어 서비스하려면 각 호스트마다 ServerNameDocumentRoot를 따로 잡아야 합니다.

즉 경우를 나눠서 보시면 됩니다.

1) 같은 도메인 아래 /A, /B 로 접속하는 경우
예:
http://abc.com/A/
http://abc.com/B/

이 경우에는 A와 B 각각의 application/config/config.php에서 base_url을 다르게 잡아야 합니다.


 
 
// A
$config['base_url'] = 'http://abc.com/A/';

// B
$config['base_url'] = 'http://abc.com/B/';
 

base_url()은 config 파일의 base URL 값을 그대로 사용하므로, B에 A 경로가 들어가 있으면 링크나 리다이렉트가 꼬일 수 있습니다.

2) A와 B를 서로 다른 도메인/서브도메인으로 접속하는 경우
예:
http://a.abc.com/
http://b.abc.com/

이 경우에는 CI 설정만으로 되는 것이 아니라, Apache 쪽에서 가상호스트(VirtualHost) 를 각각 따로 잡아야 합니다. Apache 문서도 각 사이트마다 최소한 ServerNameDocumentRoot를 따로 설정하라고 안내합니다.

예를 들면 개념적으로 이런 식입니다.


 
 
<VirtualHost *:80>
ServerName a.abc.com
DocumentRoot "/home/A"
</VirtualHost>

<VirtualHost *:80>
ServerName b.abc.com
DocumentRoot "/home/B"
</VirtualHost>
 

이 설정이 없으면, 요청이 기본 사이트로만 들어가서 A만 열리고 B는 안 열리는 일이 생길 수 있습니다. Apache는 들어온 요청의 IP/포트, 그리고 ServerName 기준으로 어떤 가상호스트를 쓸지 결정합니다.

3) .htaccess / rewrite 문제
A는 되고 B는 안 되는 경우, B 쪽 .htaccessRewriteBase 또는 rewrite 규칙이 맞지 않는 경우도 많습니다. Apache 문서에 따르면 .htaccess 같은 per-directory context에서는 현재 디렉터리 기준으로 rewrite가 동작하고, 상대 경로 치환 시 RewriteBase가 URL prefix를 결정합니다. 그래서 /A/B처럼 하위 폴더에 각각 설치했으면 B에도 그 위치에 맞는 rewrite 설정이 필요합니다.

예를 들어 B가 /B/ 아래 있다면 보통 이런 식으로 맞춥니다.


 
 
RewriteEngine On
RewriteBase /B/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
 

정리하면
A가 된다고 해서 B가 자동으로 되는 것이 아닙니다. B도 따로 아래를 확인하셔야 합니다.

  • application/config/config.phpbase_url

  • index_page / URL 설정

  • B 폴더의 .htaccessRewriteBase

  • 서로 다른 도메인이라면 Apache VirtualHostServerName, DocumentRoot

게시판 답변용으로는 이렇게 쓰시면 자연스럽습니다.


 
 
CI를 두 군데 설치하셨다면
B도 A와 별도로 설정을 잡아주셔야 합니다.

보통은 CI 문제가 아니라
1) B의 base_url
2) B의 .htaccess / RewriteBase
3) Apache의 DocumentRoot 또는 VirtualHost
이 셋 중 하나가 맞지 않아서 접속이 안 되는 경우가 많습니다.

같은 도메인에서 /A, /B 형태로 쓰시면
각각 config.php 에서

A : http://abc.com/A/
B : http://abc.com/B/

처럼 base_url 을 따로 잡아주셔야 하고,

서브도메인이나 다른 도메인으로 나누신 거라면
Apache 쪽에서 VirtualHost 를 각각 따로 설정해주셔야 합니다.

즉, A가 된다고 B가 자동으로 따라가는 것은 아니고,
B도 별도로 경로 설정과 웹서버 설정을 확인하셔야 합니다.