-
[CodeIgniter] index.php 제거프로그래밍/CodeIgniter 2018. 2. 7. 12:08
▶CodeIgniter index.php 제거
▶설명
코드이그나이터(CodeIgniter)에서 전에 만든 컨트롤러 추가 예제를 기준으로 설명하겠습니다.
변경 전 URL : localhost/ci/index.php/Tutorial
변경 후 URL : localhost/ci/Tutorial
URL에 index.php가 포함되어있으면 보기도 좋지 않고, 사용하기도 좋지 않습니다.
이번에는 URL에서 index.php 제거 작업을 진행하도록 하겠습니다.
▶Apache 설정 변경
Apache에 conf/httpd.conf 파일을 열어서 mod_rewrite 모듈이 설정되어 있는지 확인합니다.
(가끔씩 보면, 모듈 설정 파일은 따로 분리되어 include 되는 경우도 있으니 include된 파일도 확인합니다.)
conf/httpd.conf
#LoadModule rewrite_module modules/mod_rewrite.so
위와 같이 존재되어 있다면 주석(#)을 제거합니다.
LoadModule rewrite_module modules/mod_rewrite.so
만약 위에 코드가 존재하지 않는다면 mod_rewrite 모듈을 검색하여 설치하시기 바랍니다.그리고 현재 프로젝트 설정 폴더(Directory)에 AllowOverride가 All로 설정되어 있는지 확인합니다. (None으로 되어 있다면 All로 변경)
AllowOverride All
▶코드이그나이터(CodeIgniter) 설정 변경
코드이그나이터(CodeIgniter) 폴더를 기준으로 설명하겠습니다.
application/config/config.php
$config['index_page'] = '';
index.php를 찾아서 빈 값으로 설정합니다.
▶.htaccess 파일 추가 (또는 설정)
코드이그나이터(CodeIgniter)에 index.php가 존재하는 폴더에 .htaccess 파일을 추가합니다. (이미 존재하는 경우 수정합니다.)
윈도우가 아닌 경우 퍼미션(Permisson)을 755로 설정합니다.
.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
3~4번째줄
추가되어 있지 않은 경우, 모든 코드이그나이터(CodeIgniter) 하위에 존재하는 assets 폴더 혹은 robot.txt 등에 접근 할 수 없습니다.
(암묵적으로 index.php를 거치기 때문에 존재하지 않는 폴더로 인식)
▶실행
Tutorial 컨트롤러 실행
주소
localhost/ci/Tutorial
결과
Hello Index
Tutorial 컨트롤러에 index 메서드 실행
주소
localhost/ci/Tutorial/index
결과
Hello Index
Tutorial 컨트롤러에 second 메서드 실행
주소
localhost/ci /Tutorial/second
결과
Hello Second
▶.htaccess 3~4번째 줄 테스트
.htaccess 3~4번째줄 기능에 대해 보충하기 위해 작성합니다.
localhost/ci/license.txt 라는 파일을 기준에 예제입니다.
3~4번째 줄 설정된 결과
정상적으로 라이센스 정보가 표시되는 것이 확인됩니다.
.htaccess 파일 3~4번째줄 주석 처리
<IfModule mod_rewrite.c> RewriteEngine On #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule>
위와 같이 .htaccess 파일에서 3~4번째 줄을 주석으로 수정합니다.
3~4번째 줄 주석 결과
위와 같이 서버 에러가 발생합니다.
'프로그래밍 > CodeIgniter' 카테고리의 다른 글
[CodeIgniter] 뷰 (Views) (2) 2018.03.05 [CodeIgniter] 기본 컨트롤러 설정 (Default Controller) (0) 2018.02.08 [CodeIgniter] 컨트롤러 추가 (Controller Add) (0) 2018.02.02 [CodeIgniter] 폴더 설명 (0) 2018.01.30 [CodeIgniter] 시작하기 (Get Started) (1) 2018.01.29