본문 바로가기
FrameWork/CodeIgniter

CodeIgniter 의 URL

by 백룡화검 2010. 4. 24.
CodeIgniter 의 URL

CodeIgniter 의 디폴트의URL 은  검색엔진이나 사람도 알기 쉽게 설계되었습니다. 동적 시스템의 대명사라고 할 수 있는 일반적인"query string" 어프로치를 채용하고, 다음과 같은 세그먼트(segment) 베이스 어프로치 를 채용하고 있습니다:

www.your-site.com/news/article/my_article

Note: 쿼리 문자열(query string)을 뒤에 붙여서 사용할 수도 있습니다.


URI 세그먼트(segment)

Model-View-Controller 어프로치에 따르면 URL 안에서는, 세그먼트(segment)는 대체로 다음과 같이 표현됩니다:

www.your-site.com/class/function/ID
  1. 최초의 세그먼트(segment)는 호출해야 할 콘트롤러 클래스를 나타냅니다.
  2. 2 번째의 세그먼트(segment)는, 클래스가 불러오는 함수 또는 메소드를 나타냅니다.
  3. 3번째 이후의 세그먼트(segment)는, 콘트롤러에게 건네지는 request , ID 등의 값을 나타냅니다.

URI 클래스 와 URL 헬프(helpers) 에는URI 데이터를 간단하게 취급하기 위한 메소드가 준비되어 있습니다.게다가 URI루팅 기능을 이용하면, 보다 유연하게URL 을 재매핑 할 수 있습니다.

index.php 파일을 URL 로부터 제거한다

초기 상태에서는 index.php 파일이 URL 의 안에 포함되는 모습이 되어 있습니다:

www.your-site.com/index.php/news/article/my_article

이것은 .htaccess 파일을 사용하면, 간단하게 이것을 없앨 수 있습니다.  특정의 항목을 제외한 모든 것이 리디렉트 되도록하는 룰을 이용한 예입니다:

RewriteEngine on
RewriteCond $1 !^(index.php|images|robots.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

위의 예에서는,index.php ,images , 및 robots.txt 이외의 모든HTTP 리퀘스트는 index.php 파일에의 리퀘스트로서 취급됩니다.


URL 스픽스(suffix)의 추가

config/config.php 파일 안에서 생성되는 모든URL 에 부가되는 스픽스(접미말)를 지정할 수 있습니다. 예를 들어,URL 이 다음과 같은 것이었다고 하면:

www.your-site.com/index.php/products/view/shoes

무엇으로 되어 있는지 종류를 나타내기 위해서 옵션으로.html 등의 스픽스를 추가할 수 있습니다:

www.your-site.com/index.php/products/view/shoes.html


쿼리 문자열의 유효화

URL 에 다음과 같은 쿼리 문자열을 사용하고 싶을때가 있을 겁니다. :

index.php?c=products&m=view&id=345

바로,application/config.php 파일의 설정으로 가능하게 할 수 있습니다. 설정 파일을 열면 다음과 같은 항목이 있습니다. :

$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';

"enable_query_strings" 를 TRUE 로 변경하면, 이 기능이 가능하게 됩니다. 다음 예와 같이, 콘트롤러와 메소드를 호출하기 위해서 "trigger" 로 지정한 어구[ 역주:이 예에서는, 「c 」와「m 」.위의 설정의$config['controller_trigger'] 에서 지정해 있는 어구 ])를 사용해 콘트롤러와 메소드에 액세스 합니다:

index.php?c=controller&m=method

Please note: 쿼리 문자열을 사용하고 있는 경우는, 세그먼트(segment) 베이스의 URL의 기능과 helpers를 이용한 URL 생성방법을 이용할 수 없기 때문에 URL 을 스스로 만들어 줄 필요가 있습니다

 

출처 : http://zx.tistory.com/42