codeigniter index.php 없애기

아래는 한 CI커뮤니티에 index.php을 생략하는 방법 중 나오는 .htaccess 파일 내용이다.
각 줄에 대한 의미는 위 링크와 mod_rewrite.html에 잘 설명되어 있다.

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

하위디렉토리 안에 ci가 있다면
RewriteRule ^(.*)$ /index.php/$1 [L] 이 부분을
RewriteRule ^(.*)$ (하위디렉토리)/index.php/$1 [L]
이렇게 바꾸어주면 된다.

예를 들어 ver1안에 ci가 있다면
RewriteRule ^(.*)$ ver1/index.php/$1 [L]
이렇게 써주면 된다.

그러던 중에 “UniServerZ“라는 포터블 WAMP를 쓰다가 index.php가 안없어지는 경우가 있었다. 구글링으로 해결법을 찾았는데 위에 하위디렉토리 부분을 수정안해도 되어서 공유해본다.

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt)
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^(.*)$ ./index.php/$1 [L]
</IfModule>

“RewriteBase /” 이 부분이 없어졌고
RewriteRule ^(.*)$ ./index.php/$1 [L]
/index.php 앞에 .이 생겼다

서브디렉토리를 변경하거나 루트디렉토리로 옮겨도 이상없이 잘 작동하였다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다