CI 묻고 답하기

제목 현재 url을 유지하면서 프록시를 이용하고 싶습니다.
카테고리 CI 2, 3
글쓴이 케케케 작성시각 2023/04/03 14:29:01
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 3311   RSS

안녕하세요

codeigniter를 이용한 프로젝트를 사용하고있습니다.

하려고 하는 작업은

a.com/test 이라고 브라우저에 입력을 하면

브라우저에는 a.com/test가 유지 되지만백앤드에서는 a.com/i/test로 프록시가 되도록 적용하고싶습니다.

이렇게 한 의도는 뒤에 url path에 따라서 프로젝트가 바뀌는건데url의 첫번째는 컨트롤러 명칭이다보니 I라는 컨트롤러는 생성하고 나머지는 i/(:any)/write= board/write이런식으로 route.php에서 설정하였습니다.

모든 url에 강제로 I 컨트롤러를 넣다보니 a.com/i/test/write  => board 컨트롤러 write 이런 방식입니다.

 

아무튼 위에 의도를 하고자apache2.conf 설정파일에 

ProxyPass /test http://a.com/test/

ProxyPassReverse /test http://a.com/i/test/

이런식으로 하면 해결이 되지만 프로젝트가 test만 있는게 아니고 몇십개가 있으며 해당 프로젝트명을 모두 하드코딩식으로 설정파일에 작성하거나 추가될때마다  설정파일을 수정하는게 번거로워서정규식을 통해 이용하고싶어요

RewriteRule ^/(?!i/)([^/]+)/?$ http://a.com/i/$1/ [P,L]

ProxyPassReverse / http://a.com/ 

이런식으로 해봤는데도 잘 안되네요...어떻게 해야할까요?

 다음글 css나 js경로문제 (1)
 이전글 PHP 8.2 + CI 4.3.3 에서 에러 문의 (C... (6)

댓글

한대승(불의회상) / 2023/04/04 09:27:30 / 추천 0

일반적으로는 컨트롤러 폴더에 i 라는 폴더를 만들고 그 안에 컨트롤러 파일을 두시면 됩니다.

관리자용 컨트롤러와 일반 사용자용 컨트롤러로 역할 분리하여 설계하는것이 보안상 좋습니다.

케케케 / 2023/04/04 13:00:51 / 추천 0

ㄴ 관리자용과 사용자용 컨트롤러를 사용하는것이 아닙니다.

test라는 프로젝트를 사용해야하는데 codeigniter의 첫번째 segment는 컨트롤러 명칭이라서 임의로 I라는 컨트롤러를 생성하였고 i/test/board... 이런식으로 

첫번쨰 segment가 I 컨트롤러

두번째 segment가 프로젝트명, 세번째는 메서드이름 이런식으로 하는거에요

따로 역할분리를 하려는 의도는 아닙니다.

생각생각 / 2023/05/10 15:28:41 / 추천 0

저는 주로 아래와 같이 routes.php에서 라우팅 설정하여 사용하고 있습니다.

컨트롤러에 i 디렉토리 생성 후 그 안에다가 컨트롤러를 생성하셨다면, 라우팅으로는 i를 생략하고 접근하게 됩니다.

아래와 같이 명시했을 때 admin 혹은 i 경로를 첫번째 segment로 접근하는 경우에만 생략하지 않습니다.

$route['((?(?=admin|i)|.)*)'] = 'i/$1';