PHP/CodeIgniter

[CodeIgniter] 주소줄에 index.php 없애기

율토리 촌장 2020. 10. 16. 16:19

 

 

율토리 마을의 PHP Framework 는 CodeIgniter 이다. (이하 CI)

 

촌장은 율토리 마을의 주소를 부를때 index.php 가 들어간걸 안 좋아한다. (촌장 개취 인정?!)

 

그래서 항상 index.php 를 없애는데, 

우리 율토리 주민들도 index.php 를 없애는 방법을 함께 알아보자.

 

Web 마을에 CI 를 올렸다고 가정하고 설명하겠다.

 

 

1. 도메인 접근 기준, 최상위 웹 디렉토리 위치에 .htaccess 파일을 아래 내용을 넣어서 만들어주자.

 

# .htaccess 파일 내용

<IfModule mod_rewrite.c>

    # Options +FollowSymlinks
    RewriteEngine On

    # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to the front controller, index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

 

 

2. Apache 에서 Host 가 접근하는 디렉토리를 설정해주는 부분에서 아래 권한을 꼭 넣어주어야한다.

 

   - 율토리마을은 가상호스트 (서브 도메인) 를 사용하기 때문에 VirualHost 설정 부분에 넣어주었다.

   - 가상호스트를 사용하지 않는 경우는, http 설정 파일인 httpd.conf 에서 설정해주면 된다.

     (대개 /etc/httpd/conf 경로에 위치하여있다.)

 

AllowOverride All

 

 

3. 율토리에서는 index.php 가 있을때와 없을때의 주소를 모두 허용하고 있지만,

   index.php 를 허용하고 싶지 않을 경우 다음의 설정을 추가로 해주면 된다.

   

   1) CI 구조에서 /application/config/config.php 파일을 연다.

   2) $config['index_page'] = 'index.php';  의 코드를 찾아서 index.php 를 제거하고 빈값으로 설정해준다.

 

 

위 1번~3번까지 작업 후 apache를 재시작하여주면 index.php 없이 주소를 사용할 수 있다.