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'] = "";
'Development > Servers' 카테고리의 다른 글
MySQL 문자열 치환, 데이터 덤프 및 복원, 문자열 나누기 (0) | 2011.05.27 |
---|---|
MySQL 타입별 최대 최소 값 (0) | 2011.02.17 |
테이블 유무 확인 후 생성하기 (0) | 2009.09.21 |
데이터베이스 정규화 Normalization (0) | 2008.11.28 |
오라클 익스프레스 oracle express 웹서버 포트 변경하기 (0) | 2008.06.05 |