TIP게시판

제목 CI 4.0 에서 /public/index.php 없애기
글쓴이 빛그림 작성시각 2018/09/29 11:01:09
댓글 : 4 추천 : 2 스크랩 : 0 조회수 : 19384   RSS

CI 4.0 에서 /public/index.php를 .htaccess 설정으로 숨기는 방법입니다.

한동안 자주 올라오는 질문이 될듯하여 글 올려 봅니다.

 

1. application, public, system, tests, docs 등의 디렉토리가 있는 홈디렉토리에서 .htaccess 화일을 생성하고, 아래와 같이 설정

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteRule ^(.*)$ public/$1 [L]

</IfModule>

 

2. public 디렉토리 안에 .htaccess 화일을 생성하고 아래와 같이 설정 - 기존과 동일

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond $1 !^(index\.php)

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>       

 다음글 $_SERVER['PHP_SELF'] 취약점 (1)
 이전글 nginx + php + mysql seting (2)

댓글

배강민 / 2018/09/29 11:18:51 / 추천 0

저는 https://github.com/bcit-ci/CodeIgniter4/tree/develop/public 여기에 기본으로 존재하는 .htaccess로 바로 동작이 되어서 아무것도 안해도 되었었는데요

흠.. public을 document root로 안잡고 /를 잡을때는 이럴 수도 있겠네요

전 public 폴더를 document root로 잡았거든요

빛그림 / 2018/09/29 12:02:51 / 추천 0
저도 public를 DocumentRoot로 설정했는데, 좀 제한적인 환경이나 환경설정이 익숙하지 않은 초급자들이 있을듯 해서요...
한대승(불의회상) / 2018/10/01 17:08:38 / 추천 0

위 설정은 document root 아래 public이 있는 기준으로 작성되었군요.

ci4.0 이라 해도 mod_rewrite 설정이므로 댓글에 명시한것처럼 document root를 public으로 설정했다면 ci2.x, 3.x 버전과 동일하게 설정해도 문제될 부분이 없습니다.

 

 

배강민 / 2018/10/08 13:27:05 / 추천 0

생각해보니, 국내 웹호스팅을 사용한다면 빛그림님의 설정이 필요한 경우가 많겠네요.

웹호스팅은 대부분(?) 폴더 하나를 주고 그걸 바로 도메인에 연결을 해주니까 말이죠.