블로그 프로필 이미지

SMALL




☞ CI 에서 index.php 죽이기란?


 사실 index.php 를 죽인다는 말은 rewrite 모듈을 접해보지 않은 사람이라면 이해가 안갈 수 있다. 나도 처음 날코딩을 하다가 코드이그나이터를 접했을 때, 이 말을 알게 되었다. 그때 당시 index.php 죽이기라는 말을 이해하는것 보다는 공유되어있는 파일을 그냥 가져다가 썻던걸로 기억한다. 


 본론으로 들어가서 index.php 죽이기 라는 말은 코드이그나이터의 규칙을 생각하면서 보면 이해하기 쉽다. 일반적으로 코드이그나이터의 URL 형식은 아래와 같다.


http://호스트주소/index.php/컨트롤러/함수/파라미터


 위와 같이 코드이그나이터에서는 기본적으로 index.php 를 거쳐야만 application 과 system 파일들을 로드하여 CI의 라이브러리나 각종 함수들을 이용 할 수 있다. 이말은 즉 자신의 index.php 파일을 보면 몇가지 설정해주어야 하는게 있는데, 그중에 하나가 application 디렉토리 경로와 system 디렉토리 경로다. 이경로가 잘못될시 코드이그나이터는 작동이 안된다. 그렇기 때문에 URL 접근시 index.php 를 거쳐야한다.


 위의 말을 이해했다면 index.php 죽이기라는 말도 이해가 될것이다. 다시말해 index.php 죽이기는 URL 접속시 index.php 가 없는 형태로 사용 한다는 말이다. 물론 URL 에 index.php 를 붙인 형태로도 사용할 수 있다. index.php 죽이기를 하면  URL 경로를 아래와 같은 형태로 사용할 수 있다.


http://호스트주소/컨트롤러/함수/파라미터




☞ CI 에서index.php 죽이기와 .htaccess 파일


CI 에서 URL 접속시 index.php 없이 사용하기 위해선 rewrite 모듈을 이용하여야 한다. rewrite 같은 경우 Apache 모듈중 하나인 mod_rewrite 모듈을 로드해 주어야 한다. 기본적으로 로드가 되어있을것이다. 만약 Apache httpd.conf 환경설정파일에서 mod_rewrite 모듈이 아래과 같이 '#' 으로 주석처리 되어있다면 주석처리된 '#' 을 없애주면 된다.


#LoadModule rewrite_module modules/mod_rewrite.so

 

 이제 .htaccess 파일에 대해 알아보기전에 Apache 의 httpd.conf 환경설정 파일에서 한가지 더 설정해 주어야 하는게 있다. 일단 환경설정 파일에서 아래와 같은 구문을 찾아 화살표로 된 부분의 구문으로 변경해주어야한다. 


찾을 구문 => AllowOverride None

변경할 구문 => AllowOverride All


 위의 설정과 같이 변경해 주는 이유는 앞으로 설명할 .htaccess 파일을 사용하기 위해서이다. 위와 같이 설정이 되어있지 않다면, index.php 죽이기를 할 수 없다. 그이유는 Apache 에서는 접근을 제한할 수 있는 파일이 있는데 이는 기본적으로 .htaccess 의 확장자를 가진 파일이다. 이설정을 위와같이 All 로 변경해주면 .htaccess 파일을 통해 디렉토리 접근을 개별로 설정할 수 있게된다. 물론 .htaccess 파일확장자가 아닌 다른 이름의 확장자파일을 사용할 수 있다. 만약 .htaccess 확장자를 가진 파일이 아닌 다른 확장자를 가진 파일을 원한다면 아래와 같은 구문을 추가해 주면된다.


AccessFileName .파일확장자명


 참고로 .htaccess 파일은 리눅스에서 숨김파일이기 때문에 vi 명령어를 통하여 만들 수 있지만, 윈도우에서는 확장명만 가진 파일을 만들 수 없다. 만약 윈도우에서 서버를 운영한다면 CI 를 다운받아서 그안에 있는 .htaccess 파일을 사용해야한다.


 위와 같이 Apache 설정을 다 끝냈다면, 지금부터 .htaccess 파일을 설정 해주어야한다. .htaccess 설정 같은 경우, Rewrite 구문과 정규식을 이용하여 작성하게 되는데 실무자들도 항상 헷갈리는 부분이다. 참고로 나도 기본적인 방식만 이해하며 쓰고 있기때문에, 구문에 대한 자세한 설명은 하지 않겠다. 먼저 index.php 를 죽이기 위해서 사용되는 Rewrite 설정은 아래와 같다.


<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond $1 !^(index\.php|robots\.txt) RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule>


 위의 설정을 그대로 써도 되지만, 공개적인 디렉토리를 접근할 시 몇가지 추가해주어야 하는 부분이 있다. 그 이유는 아래와 같이 public 디렉토리에 Images, CSS, Javascript, Font 등의 파일들이 있을 시 URL 을 통해 접근해야되는 경우다.


+ www

  + application

  + system

  - public

    - Images

    - CSS

    - Javascript

    - Font


 위와 같은 상황일 경우 설정해 주어야 하는 부분은 Rewrite 설정구문 중에 RewriteCond 에 설정되어있는 정규식 구문 이다. 설정하는 방법에 대한 예제는 아래와 같다. 아래의 예제는 위의 설정처럼 URL 을 통해 접근해야할 디렉토리가 public 일경우이다.


 RewriteCond $1 !^(index\.php|robots\.txt|public)

 

 설정하는 방법은 위와같이 상위 디렉토리인 public 이라는 디렉토리명만 추가해주면된다. 추가실시 한가지 명심해야할 부분은 디렉토리명 또는 파일명을 추가할 시 OR 연산자인 '|' 을 먼저 써준다음 추가해 주어야 한다는 것이다.


 한가지 중요한점이 더 있다면, .htaccess 파일은 외부 URL 접근이 허용되지 않게 하는것이다. 이 설정은 기본적으로 Apache 의 httpd.conf 파일을 통해 설정할 수 있다. 대부분 Apache 를 설치시 기본적으로  .ht 로 시작되는 파일확장자명은 접근거부로 설정되어 있기때문에, 따로 설정할 필요는 없겠지만, 만약 URL 을 통해 .htaccess 파일이 접근이 된다면 아래와 같이 해주어야 한다.


<Files ".ht*">
Require all denied
</Files>


 이것으로 index.php 죽이는 방법에 대한 설명을 끝내도록 하겠다. 아래는 기본설정된 .htaccess 파일과 참고 싸이트이다. 


 .htaccess 파일 다운로드


htaccess.zip




LIST
댓글
요요 2016.12.29 10:03  Edit  Rep

한번 올려보아요
안녕하세요

반갑습니다

Favicon of http://xn--oi2ba146a24mbtbtvt.vom77.com 온라인바카라 2020.12.28 21:57  Edit  Rep

치실을 30㎝ 정도 여유있게 잘라 양쪽 검지에 감고
이 사이에 끼워넣은 뒤 이 옆면에 바짝 붙여 V자를 만든다.
http://xn--oi2ba146a24mbtbtvt.vom77.com 온라인바카라

코비치 2021.09.26 11:25  Edit  Rep


레알 마드리드는 이번 여름 새 시즌을 안전놀이터 순위 앞두고 스쿼드를 축소하려고 있으며 쿠보는 임대로 팀을 떠날 것이다.



일본의 스타는 그의 국가대표팀에서 인상적인 [ http://aaa.aaoouu.com ] 활약으로 올림픽을 마치고 라리가 클럽은 물론 유럽 전역의 클럽에서 관심을 받고 있다.



마요르카와 레알 소시에다드는 이 미드필더에게 관심을 갖고 있다. 쿠보가 가장 선호하는 클럽은 마요르카다. 쿠보는 2019-20 시즌 마요르카에서 성공적인 임대 생활을 보냈으며 35경기에 출전하여 4골을 기록했다.



레알 마드리드는 마르틴 외데고르를 레알 소시에다드로 보낸적이 있으며 레알 마드리드는 쿠보를 레알 소시에다드로 보내는것을 선호 할 것이며 다음 시즌 소시에다드는 유로파리그에 출전하기 때문에 클럽은 선수가 발전할 좋은 기회로 볼 것이다.



쿠보의 임대이적은 재정에도 도움을 줄거다. 따라서 잠재적인 거래에서 마요르카를 보류할 수도 있다.


웨스트햄은 피오렌티나의 밀렌코비치 [ http://bbb.aaoouu.com ] 영입에 매우 근접했다고 알려졌습니다.



그는 피오렌티나에 2017년부터 4년을 있었습니다.



지난 3시즌 동안 그는 세리에A에서 가장 뛰어난 젊은 수비수로 안전놀이터 순위 성장했으며 많은 구단들의 관심을 받고 있습니다.



그러나 그 중 웨스트햄이 영입에 가장 근접하며 계약기간이 1년 남은 그의 이적료는 20M 파운드라고 알려졌습니다.



리버풀이 그를 노려야 할까요? 리버풀은 지금 스쿼드에 7명의 중앙 수비수가 있습니다. 어쩌면 너무 많을지도 모릅니다.



반 다이크, 마팁, 코나테, 필립스, 데이비스, 고메즈 그리고 윌리엄스가 주전자리를 노리고 있습니다.



하지만 아직 이적시장이 끝나지 않았으며 이 중 몇 명은 팀을 떠나게 될 것이라는 소식이 있습니다.



필립스와 데이비스는 팀을 떠날 것이라는 소식이 있으며 [ http://ccc.aaoouu.com ] 윌리엄스는 임대로 떠나게될 것이라는 얘기도 있습니다. 그렇게 7명의 수비수는 4명으로 줄어들 수도 있습니다.



그리고 우리는 반 다이크, 마팁 그리고 고메즈가 장기 부상이후 어떤 모습을 보여줄지 알 수 없습니다. 이 세명은 지난 시즌 많은 경기를 빠져야만 했습니다. 코나테 역시 부상 이력이 있는 선수입니다.



밀렌코비치의 가격을 고려한다면 이 이적은 굉장히 합리적입니다. 그는 지난 3시즌동안 9경기만을 결장하였고 경고 누적으로 인한 경우가 대부분이었습니다.



그는 또한 공격에서도 상당히 뛰어나며 코너킥에서 좋은 모습을 보여줍니다. 그는 이탈리아에서 11골을 기록하였습니다.



그는 1대1 경합에 능한 수비수이며 리버풀의 기존 수비수들과도 좋은 안전놀이터 순위 모습을 보여줄 것입니다. 그는 공중불 경합 성공률이 77%였으며 리버풀의 그 누구보다도 높은 수치입니다.



또한 밀렌코비치는 FSG가 원하는 어리고 재능있어 나중에 팔 수 [ http://ddd.aaoouu.com ] 있는 선수상에 딱 들어맞습니다.



리버풀은 여전히 선수단 정리에 난항을 겪고 있으며 그로 인해 코로나로 재정난이 있는 다른 팀을 적극적으로 이용하지 못하고 있습니다.



리버풀은 그러므로 현재 밀렌코비치를 노리기 힘든 상황이지만 안전놀이터 순위 필립스, 데이비스, 윌리엄스 등이 팀을 나간다면 상황이 바뀔 수도 있습니다.

(비회원은 자신의 글을 볼 수 없습니다.)