[php] PHP CodeIgniter 라우팅

이번 포스트에서는 PHP CodeIgniter에서 라우팅 하는 방법에 대해 알아보겠습니다.

  1. CodeIgniter 라우팅이란?
  2. 기본 라우팅 설정
  3. 라우팅 규칙 추가
  4. 라우팅과 컨트롤러 메소드 매핑
  5. URL 매개변수 활용
  6. 라우팅 제약 추가

이제 각 주제에 대해 자세히 살펴보겠습니다.


1. CodeIgniter 라우팅이란?

CodeIgniter의 라우팅은 URL과 웹 페이지 요청을 해당하는 컨트롤러 메소드로 연결해주는 기능입니다. 따라서 URL을 통해 원하는 페이지로 쉽게 이동할 수 있게 도와줍니다.

2. 기본 라우팅 설정

CodeIgniter의 기본 라우팅은 기본적으로 config/routes.php 파일에서 설정할 수 있습니다. 이 파일을 열면 루트 디렉토리로 연결되는 기본 라우팅 설정을 확인할 수 있습니다.

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

3. 라우팅 규칙 추가

새로운 라우팅 규칙을 추가하려면 다음과 같이 $route 배열에 URL 패턴과 매핑할 컨트롤러 메소드를 정의하면 됩니다.

$route['news'] = 'news';

위의 예제는 /news URL을 news 컨트롤러로 매핑하는 규칙을 추가한 것입니다.

4. 라우팅과 컨트롤러 메소드 매핑

컨트롤러 메소드를 호출하려면 다음처럼 URL에 메소드 이름을 추가하면 됩니다.

$route['products/shoes'] = 'product/shoes';

위의 예제는 /products/shoes URL을 product 컨트롤러의 shoes 메소드로 매핑하는 규칙을 추가한 것입니다.

5. URL 매개변수 활용

라우팅을 이용하여 URL에 매개변수를 전달하여 동적인 페이지를 생성할 수도 있습니다. 예를 들어, 다음과 같이 URL에 변수를 전달할 수 있습니다.

$route['product/(:any)'] = 'catalog/product_lookup/$1';

위의 예제는 /product/{상품번호} URL을 catalog 컨트롤러의 product_lookup 메소드로 매핑하면서 {상품번호}를 이 메소드에 넘겨주는 것입니다.

6. 라우팅 제약 추가

특정 패턴에 매칭되는 URL을 처리하려면 정규표현식을 사용하여 라우팅 제약을 추가할 수 있습니다. 예를 들어, 다음과 같이 정규표현식을 사용하여 특정 숫자 형식의 URL만을 처리하도록 할 수 있습니다.

$route['product/([0-9]+)'] = 'catalog/product_lookup_by_id/$1';

위의 예제는 /product/{숫자} 형식의 URL만을 catalog 컨트롤러의 product_lookup_by_id 메소드로 매핑하는 규칙을 추가한 것입니다.


이상으로 PHP CodeIgniter에서의 라우팅에 대해 알아보았습니다. 라우팅을 활용하면 더 효율적이고 동적인 웹 애플리케이션을 개발할 수 있습니다.

참고문헌: CodeIgniter User Guide