ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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번째 줄 주석 결과


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


    댓글

Designed by Tistory.