처음부터 차근차근
URI 매핑 변경하기 본문
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 설명
$route['default_controller'] = 'welcome';
사용자가 url에 아무런 정보도 입력하지 않았을 때 나오게 할 controller와 메서드를 지정하는 것이다.
controllers폴더 아래에 Welcome.php를 찾아서 Welcome class의 index()메서드를 호출한다.
그래서 welcome대신에 controller이름/index 나 controller이름 을 적으면 적은 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 |