처음부터 차근차근

URI 매핑 변경하기 본문

Framework/CodeIgniter

URI 매핑 변경하기

_soyoung 2021. 10. 12. 23:18
반응형

CodeIgniter에서 url 규칙은 아래와 같다.

아이피주소/index.php/controller/메서드/매개변수

 

입력된 controller class에서 입력된 메서드를 찾아 매개변수를 넘기고, 일을 수행하는 방식이다.

 

그런데 이 규칙대로 url을 사용하고 싶지 않을 수 있다.

그럴 때는 routes.php파일을 수정하면 된다.

 

routes.php는 *url routing 규칙 정의 파일이다.

* url routing : 사용자가 요청한 url을 따라 controller과 메서드를 호출하는 것

 

routes.php파일은 application > config > routes.php 에 있다.

새로운 규칙을 입력하려면 routes.php에서 기본적으로 있는 부분 아래나 위에 작성하면 된다.

 

 

 

 

routes.php 설명

 

routes.php

$route['default_controller'] = 'welcome';

사용자가 url에 아무런 정보도 입력하지 않았을 때 나오게 할 controller와 메서드를 지정하는 것이다.

controllers폴더 아래에  Welcome.php를 찾아서 Welcome class의 index()메서드를 호출한다.

그래서 welcome대신에 controller이름/indexcontroller이름 을 적으면 적은 controller의 index()메서드가 나온다.

ex)

$route['default_controller'] = 'page';

결과 : 사용자가 url창에 localhost를 치면 page controller의 index()함수 실행

 

 

$route['404_override'] = '';

사용자가 존재하지 않는 페이지를 접속했을 때 나오게 할 controller와 메서드를 지정하는 것이다.

'' 안에 controller이름/함수명 과 같이 적으면 controller안의 메서드가 호출된다.

ex)

$route['404_override'] = 'error/not';

결과 : 사용자가 localhost/asjhdfl처럼 알 수 없는 url치면 error controller의 not()메서드 호출

 

 

 

 

(:num) 사용

 

(:num)은 뒤에 나오는 $1이나 $2같은 것에 대입된다.

$route['category/(:num)'] = "page/category/$1";

원래는 localhost/index.php/page/category/5 를 입력해야 한다고 가정하자.

저 코드는 localhost/index.php/category/5 라고 적어도 codeigniter가 똑같이 실행될 수 있게 만드는 코드이다.

category/ 다음에 숫자가 오면 그 숫자를 $1에다 넣어 page/category/입력한숫자를 실행한다.

 

 

 

 

정규표현식 사용

 

정규표현식이란 문자열을 처리하는 방법 중 하나로 문자열에 나타는 특정 문자와 대응시키기 위해 사용되는 패턴이다.

특정한 조건의 문자를 검색하거나 치환할 때 편하게 처리 할 수 있다.

$route['category/([a-z]+)/([a-z]+)/(\d+)'] = "$1/$2/$3";

[a-z] : a~z까지의 알파벳 중

+ : (수량 한정자)하나 이상을 가지고 있으면

정규표현식에 부합한다.

 

\d : 숫자가

+ : 한 글자 이상있으면

정규표현식에 부합한다.

 

조건에 부합하는 정규표현식은 뒤에 나오는 $1, $2, $3에 대입된다.

 

 

 

 

 

 

 

 

출처 : 'CodeIngniter - 생활코딩' 변형 및 요약

반응형

'Framework > CodeIgniter' 카테고리의 다른 글

Form Validation  (0) 2021.10.17
Helper  (0) 2021.10.13
Bootstrap  (0) 2021.10.10
Model과 View, 데이터베이스 연동  (0) 2021.10.09
Codelgniter 파일 구조와 Controller, Veiw  (0) 2021.10.06
Comments