>PHP 프레임워크 >ThinkPHP >thinkphp 라우팅이 변환되지 않는 문제를 해결하는 방법

thinkphp 라우팅이 변환되지 않는 문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-27 17:07:221436검색

1. 문제 설명

ThinkPHP를 개발에 사용하다 보면 가끔 이런 상황에 직면하게 됩니다. 일부 라우팅 작업을 수행할 때 페이지가 예상한 인터페이스로 점프하지 않습니다.

예를 들어, "www.example.com/home/do" URL을 통해 "HomeController.php"의 "do" 메소드에 액세스하려고 하지만 실제로는 이 메소드에 액세스할 수 없습니다. 동시에 오류 메시지가 나타나지 않아 시작할 수 없다는 것을 발견했습니다.

2. 원인 분석

ThinkPHP에서는 URL 접미사를 통해 경로가 일치됩니다. URL에 접미사를 사용하지 않으면 ThinkPHP는 우리가 액세스하려는 메서드가 컨트롤러의 기본 메서드라고 생각합니다(기본 메서드 이름은 일반적으로 "index"입니다).

예를 들어, "www.example.com/home/index" URL을 사용하면 기본적으로 "HomeController.php"의 "index" 메소드에 액세스됩니다.

URL "www.example.com/home/do"를 사용할 때 접미사를 사용하지 않기 때문에 ThinkPHP는 "index" 메서드에 액세스하고 있고 "do" 메서드가 존재하지 않기 때문에 생각합니다. in 컨트롤러에서는 페이지 액세스가 실패하게 됩니다.

3. 해결 방법

1. "/" 접미사를 사용하세요

URL 끝에 슬래시 "/"를 추가하면 라우팅 불일치를 피할 수 있습니다. 예를 들어, "HomeController.php"의 "do" 메소드에 액세스하기 위해 "www.example.com/home/do/" URL을 사용할 수 있습니다.

동시에 ThinkPHP를 개발에 사용할 때 경로가 변환되지 않는 문제를 피하기 위해 구성 파일 config.php에서 URL 접미사를 "/"로 설정하는 것이 좋습니다.

2. 라우팅 규칙 수정

라우팅 규칙을 수정하여 문제를 해결할 수도 있습니다.

먼저 라우팅 구성 파일(일반적으로 Route.php)에서 라우팅 규칙을 다음과 같이 정의할 수 있습니다.

return [
    'home/do/[:id]' => 'home/[:action]',
];

이런 방식으로 URL "www.example.com/home/do/1"을 다음과 같이 전달할 수 있습니다. "HomeController.php"의 "do" 메소드에 액세스하고 URL에 id 매개변수를 전달합니다.

위 내용은 thinkphp 라우팅이 변환되지 않는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제