본문 바로가기

Development/Servers

코드이그나이터codeigniter index.php 관련

CI 의 팬시 URL 을 사용하면서 가장 문제가 되는 부분은 index.php 파일을 어떻게 안보이게 하느냐 일 것이다.

매번 세팅할 때마다 까먹고 검색을 하게 되는 불편이 있어 정리해둔다.

어떤 식으로든 .htaccess 파일을 수정한다. 대부분 아래와 같은 형태를 가지게 된다. 

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /
</IfModule>

또는 아래와 같은 형태일 것이다. (CI포럼 카피)

<IfModule mod_rewrite.c>
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteCond %{REQUEST_URI} !^/captcha/(.*)$
RewriteCond %{REQUEST_URI} !^/images/(.*)$
RewriteCond %{REQUEST_URI} !^/include/(.*)$
RewriteCond %{REQUEST_URI} !^/data/(.*)$
RewriteCond %{REQUEST_URI} !^/layouts/(.*)$
RewriteCond %{REQUEST_URI} !^/views/(.*)$
RewriteCond %{REQUEST_URI} !^/plugins/(.*)$
RewriteCond %{REQUEST_URI} !^/trac/(.*)$

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


위 코드에서 확인해야할 것은 
  • RewriteBase /
  • RewriteBase /mcs/
위 내용을 조심하자. 서브 디렉토리에 CI 를 운영한다면 꼭 변경해주어야한다.

위 내용을 조합하여 나는 다음과 같이 사용한다.

<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteBase /mcs/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/include/(.*)$
RewriteCond %{REQUEST_URI} !^/img/(.*)$
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
#ErrorDocument 404 /
</IfModule>

그리고 또하나 주의할 점은 CI 의 config.php 파일 변경이다.
기본적으로 /system/application/config/config.php 에 위치하고 있으나 각자 세팅에 따라 다르게 경로는 변경되기도 한다.

$config['index_page'] = "index.php";

부분이다.

위 내용을 아래와 같이 변경하면 모든 index.php 문제가 해결된다. 폼에서 서밋하더라도 index.php 파일이 나타나지 않는다.

$config['index_page'] = "";