메뉴 건너뛰기

자료실

DATA

[CodeIgniter] index.php 제거

소프터 2020.03.18 16:12 조회 수 : 1

▶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번째 줄 주석 결과

 

위와 같이 서버 에러가 발생합니다.



출처: https://extbrain.tistory.com/72 [확장형 뇌 저장소]