>  기사  >  PHP 프레임워크  >  thinkphp는 어떻게 경로를 로드하나요?

thinkphp는 어떻게 경로를 로드하나요?

步履不停
步履不停원래의
2019-07-01 10:48:063088검색

thinkphp는 어떻게 경로를 로드하나요?

ThinkPHP URL 라우팅 소개

간단히 말하면, URL 라우팅을 사용하면 특정 규칙에 따라 필요한 URL을 사용자 정의하여 URL을 아름답게 만들고, 사용자 경험을 개선하며, 검색 엔진 포함에도 이점을 얻을 수 있습니다.

원래 URL은 다음과 같습니다.

http://www.5idev.com/index.php/Products/Show/category/5/id/123

이 URL의 원래 의도는 다음과 같습니다. 카테고리에 ID가 123인 5번째 제품을 표시합니다. URL 라우팅 재작성 후 URL은 다음과 같습니다.

http://www.5idev.com/index.php/product/5/123

.htaccess 파일의 재작성 규칙을 사용하여 항목 파일을 숨기는 경우 , 그러면 위의 URL은 다음과 같이 더욱 단순화될 수 있습니다.

http://www.5idev.com/product/5/123

이 URL 주소는 비교적 간단하고 이해하기 쉽습니다.

팁: Apache의 URL 재작성 규칙을 사용하면 URL 사용자 정의 기능도 얻을 수 있습니다. 이에 대해서는 여기에서 설명하지 않습니다. 관심이 있는 경우 Apache Rewrite와 관련된 기사를 참조하세요.

ThinkPHP URL 라우팅 구성

ThinkPHP에서 URL 라우팅 기능을 사용하려면 다음을 구성해야 합니다.

프로젝트 구성 파일 Conf/config.php에서 라우팅 기능을 활성화합니다(true로 설정):

'URL_ROUTER_ON ' => ; true,

라우팅 규칙 정의

버전 2.x와 달리 3.0 라우팅 규칙은 프로젝트 구성 파일 config.php에 배열 형식으로 정의되어 있습니다. 정기 라우팅. 규칙 라우팅 구문은 다음과 같습니다.

형식 1: '라우팅 규칙' =>'[그룹/모듈/작업]?추가 매개변수 1=값 1&추가 매개변수 2=값 2...'
형식 2:'라우팅 규칙' =>array('[그룹/모듈/작업]','추가 매개변수 1=값 1&추가 매개변수 2=값 2...')
형식 3: '라우팅 규칙' =>'외부 주소'
형식 4: '라우팅 규칙' =>array('외부 주소','리디렉션 코드')

구문 설명

라우팅 규칙은 URL에 표시하려는 규칙이며 다음 요소 값입니다. is 실제 URL 주소와 매개변수 라우팅 규칙이 다음으로 시작하는 경우 이는 동적 변수를 나타내고, 그렇지 않으면 형식 2의 추가 매개변수가 배열 또는 문자열로 전달될 수 있습니다. 변수에 대한 숫자 제약 조건(예: 'product/:idd'=>'Products/Show' 라우팅 규칙은 숫자가 아닌 변수 제외 지원): 'news/:cate^add|edit|delete' => '뉴스/카테고리' 라우팅 규칙은 완전한 일치 정의를 지원합니다. 예: 'product/ :idd$'=>'Products/Show' 라우팅 규칙의 고정 주소 부분은 동적을 참조하려는 경우 대소문자를 구분하지 않습니다. 외부 주소의 변수에는 :1, :2 방법을 사용합니다. 규칙 라우팅은 전체 동적 및 결합된 동적 및 정적 정의를 지원할 수 있습니다(예: ':user/blog/:id'=>'Home/Blog/user').

이러한 규칙과 구문 설명은 상대적으로 모호합니다. 다음은 위의 라우팅 규칙과 구문 설명을 이해하는 데 도움이 되는 비교 예입니다.

구성 파일에 경로 활성화 기능이 정의되어 있는 경우 시스템은 Dispatch 구문 분석을 수행할 때 현재 URL에 정의된 경로 이름이 있는지 확인합니다. 그렇다면 정의된 라우팅 규칙에 따라 URL 구문 분석을 수행합니다.

ThinkPHP URL 라우팅 예시

경로가 어떻게 정의되는지 보려면 이 글의 시작 부분에 있는 예시를 예로 들어보세요. 프로젝트 구성 파일 Conf/config.php에서 다음 규칙을 정의합니다:

//Route 정의
'URL_ROUTE_RULES'=> array(
'product/:categoryd/:idd'=>'Products/Show', / / 규칙 라우팅
),

다음 주소에 액세스하면

http://www.5idev.com/index.php/product/5/123

주소가 제품 모듈 쇼 작업으로 확인됩니다. , get 매개변수 Category=5&id=123을 전달합니다.

status=1과 같은 추가 고정 매개변수가 있는 경우 경로를 정의할 수 있습니다.

'product/:categoryd/:idd'=>'Products/Show?status=1', //규칙 라우팅

또한 다음 URL 주소와 일치합니다.

http://www.5idev.com/index.php/product/5/123/1

위는 모두 형식 1에 따라 정의된 경로입니다. 추가 매개변수가 있는 경우 두 번째 정의 형식으로 변환할 수 있습니다.

'product/:categoryd/:idd'=>array('Products/Show','status=1')

d는 다음을 나타냅니다. 위의 라우팅 규칙은 숫자만 일치합니다. 이 제약 조건을 추가하지 않으면 모든 문자가 일치할 수 있으며 이는 기본 상황이기도 합니다. 수신 매개변수의 형식에 엄격하게 동의하려면 일반 라우팅을 사용하여 규칙을 정의하세요.

라우팅 형식: 외부 주소

라우팅 형식 3과 형식 4의 경우 일치하는 라우팅 형식이 감지되면 외부 주소로 점프합니다. 차이점은 형식 4에는 영구 리디렉션을 나타내는 301과 같은 리디렉션 코드가 있다는 점입니다. .

ThinkPHP 관련 기술 기사를 더 보려면 ThinkPHP 사용 튜토리얼 칼럼을 방문하여 알아보세요!

위 내용은 thinkphp는 어떻게 경로를 로드하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.