본문 바로가기

개발이야기/ JSON, Ajax, PHP, ASP, JSP

[CodeIgniter] 코드이그나이터 index.php 죽이기 Not Found error



당신이 아마 이 블로그를 보고 있다면 


코드이그나이터를 공부하다가 


index.php를 지우기 위해 여러가지 설정을 해보다가 


Not Found error를 보고 왜 나만 안되지? C8C8를 되뇌고 있었을 것이다.

당신의 시간을 아껴주기 위해 이 블로그를 남김요





http://[도메인]/index.php/topic  을


http://[도메인]/topic                 으로 줄이고 싶어서


index.php 죽이기를 검색하고 따라해보셨을텐데



1. httpd.conf 설정

mod_rewrite 사용하기

서버의 httpd.conf 파일을 열어서 mod_rewrite.so 모듈을 사용할 수 있게 주석을 제거한다. 

(httpd.conf 파일은 서버마다 위치가 다를 수 있음)


vi /etc/httpd/conf/httpd.conf

열어서


LoadModule rewrite_module modules/mod_rewrite.so

위 줄의 주석 제거



2.  httpd.conf 설정


AllowOverride None

AllowOverride All    로  변경



3. 아파치 재시작

service httpd restart
또는
sudo /etc/rc.d/init.d/httpd restart



4. .htaccess 파일 생성


.htaccess


위치 : 처음 index.php와 같은 폴더

내용 : 

<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>


파일이 없다면 생성해서



그리고 .htaccess 의 권한을 변경해준다.

.htaccess 파일 권한을 확인해 본다.

확인

=> ls -al


권한변경

=> chmod 755 .htaccess




5. 코드이그나이터 config.php 설정


config.php 파일을 열어서

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

$config['index_page'] = '';             으로 변경해준다.



여기 까지는 다른 블로그나 타 사이트에 많이 나와 있는 내용이다.

이거 다 했는데도 



이 에러가 보인다면

당신은 분명 가상호스팅을 사용하고 있을 것이다.




1. httpd.conf 설정

(httpd.conf 파일은 서버마다 위치가 다를 수 있음)


vi /etc/httpd/conf/httpd.conf

열어서



VirtualHost 설정한 부분을 찾아


아래 4줄을 추가하자


<Directory /[서버루트]>
    Options Indexes FollowSymLinks
    AllowOverride All

</Directory>


Directory 뒤에 붙는 경로는 DocumentRoot와 같다.

그렇기 때문에 님의 경로는 다를 수도 있음




문제는 가상 호스트에서 올오버라이드 승인 옵션을 안달아줘서


자 신나게 코딩을 해보자!!