index.php 죽이기를 했는데 코드이그나이터가 다른 하위 폴더에 있을 경우가 있다,
그럴 경우 엄청 난감한다.

index.php를 죽일때 폴더 위치까지 같이 설정해주면 된다.

index.php 죽이기를 할 때 설정한 .htaccess 파일이 있을 것이다.

그 파일을 열어준 다음
<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>

경로라고 적혀있는 부분에 하위 폴더의 이름을 적어주면 된다.

만약 폴더 경로가
naver.com/test1/test2/test3 안에 ci가 깔려있다고 가정하면


<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 ^(.*)$ test1/test2/test3/index.php/$1 [L] 
</IfModule>


이렇게 설정해주면 된다.




코드이그나이터 데이터 베이스 설정을 위해

application > config > database.php 파일로 이동을 한다.

 

기본 설정에서 PDO의 경우는 hostname을 사용하지않고 dsn을 사용해서 연결을 한다.

 

설정은 밑에처럼 기본적으로 설정을 해주면 되겠다.

 

$active_group = 'default';
$query_builder = TRUE;
$host = 'host';
$db_name = 'dbname';

$db['default'] = array(
    'dsn' => 'mysql:host='.$host.';dbname='.$db_name,
    //'hostname' => 'localhost',
    'username' => 'mysql id',
    'password' => 'mysql pw',
    'database' => $db_name,
    'dbdriver' => 'pdo',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

 

dsn의 사용과 dbdriver를 pdo로 바꿔주는게 핵심이다.

 

그리고 model에서는

 


$query = "SELECT * FROM `member` WHERE `where` = ?";
$result = $this->db->conn_id->prepare($query);
$result->execute(array('a'));

return $this->db->conn_id->lastInsertId();

 

형태로 사용하면 된다.




코드 이그나이터 index.php 경로를 없앤 후에 경로 설정이다.

routes.php 파일을 열어주고
$route['default_controller'] = ''; 이 부분을 확장자를 제거한 원하는 컨트롤러 이름으로 설정하면 된다.

autoload.php 파일에 들어가서
$autoload['libraries'] = array('database'); 이렇게 넣어주고

database.php 파일에 들어가서 db 정보들을 변경해주면 된다.




개인 컴퓨터의 서버라면 아파치 설치 폴더에서 httpd.conf를 설정해줘야 한다.

LoadModule rewrite_module modules/mod_rewrite.so
문구를 찾아서 # ( 주석 ) 을 제거해주고,

AllowOverride None을
AllowOverride All로 변경해준다.

그리고 코드이그나이터 설치한 경로로 가서
.htaccess 파일을 수정해준다. 없으면 index.php와 같은 경로에 임의로 하나 생성한다.

그 후에 config.php 파일로 들어가서
$config['index_page'] = '';

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 파일 생성부터 시작하심 됩니다.
만약에 그렇게 했는데 안될 경우 putty를 이용해서 리눅스에 접속한 다음

# vi 아파치가 있는 경로/httpd.conf
로 접속하셔서 위에 그대로 동일하게 진행해주시면 됩니다.



+ Recent posts