>  기사  >  PHP 프레임워크  >  thinkphp의 4가지 URL 모드 소개

thinkphp의 4가지 URL 모드 소개

尚
앞으로
2020-05-05 09:10:535448검색

thinkphp의 4가지 URL 모드 소개

라우팅: 프로젝트의 특정 메소드의 URL 주소에 액세스합니다. 간단히 이해하면 URL 주소입니다.

ThinkPHP에서는 시스템이 4가지 라우팅 양식을 제공합니다(이전 라우팅 양식: index.php?p=Platform&c= 제어 장치 & a = 메소드;

요약: thinkPHP의 mca는 그룹, 컨트롤러, 메소드

②Pathinfo 양식 라우팅

4 호환 가능한 양식 라우팅

자세한 설명은 아래에 있습니다

(1) 일반 양식 라우팅

또한 get 양식 라우팅이라고도 하며 모든 정보는 get을 통해 전달됩니다

라우팅 양식: http://website/entry 파일(index.php) ?m =Group&c=컨트롤러 이름&a=메소드&매개변수 이름=매개변수 값

예: 홈 그룹 아래 사용자 컨트롤러의 테스트 메소드에 액세스하고 매개변수 id=1

http://www.1336을 전달합니다. .php?m=Home&c=User&a=test&id=1

$_GET['id']를 통해 확인할 수 있으며 출력 1. 그럼 인증 성공

단점: URL을 통해 전달되는 모든 내용이 표시되므로 안전하지도 않고 보기에도 좋지 않습니다. 그래서 많이 사용되지는 않습니다

(2) pathinfo() 형태의 라우팅 (thinkPHP의 기본 라우팅)

라우팅 형태 : http://website/entry file (index.php)/group name/controller name/method/parameters Name 1/매개변수 값 1/매개변수 이름 n/매개변수 값 n

http://www.1336.com/index.php/Home/User/test/id/100

$_GET['id'가 있습니다. 방법], 100을 출력합니다. 그럼 검증 성공

(3) 라우팅 폼 재작성(rewrite)

라우팅 폼 : http://url/그룹명/컨트롤러명/메소드명/파라미터 1/파라미터 값 1/파라미터 n/파라미터 값 n

thinkPHP의 기본 라우팅 형식 Pathinfo() 라우팅과의 차이점은 항목 파일이 없다는 것입니다

참고: 이 라우팅 형식은 직접 사용할 수 없으며 사용하기 전에 구성해야 합니다

구성 단계:

1. Apache httpd.conf, 확장 재작성 재작성 모듈을 활성화합니다.

2. Apache 디렉터리 conf/extra/httpd-vhosts에 있는 가상 호스트 구성 파일을 수정하고 구성 재작성을 허용합니다. 현재 사이트를 다시 작성할 수 있음을 나타냅니다

간단히 다시 작성해야 하는 사이트의 디렉터리 구성에 Allowoverride:all


#针对目录的详细配置
    <Directory>
        #允许所有访问
        allow from all
        #允许重写
        AllowOverride all
        #表示允许站点显示文件目录结构
        Options +indexes
    </Directory>

를 추가합니다


3. Apache를 다시 시작합니다

4. ThinkPHP 압축 패키지의 htaccess 파일을 입력하여 항목 파일과 동일한 수준의 디렉터리를 입력하세요

구성이 완료된 후 확인을 위해 URL을 입력하세요. 항목 파일을 제거한 후 여기에도 위의 경로 정보의 URL이 사용됩니다. 새로고침하여 출력이 100임을 확인합니다. OK~구성 완료

확장:

PHP 작동 모드(5가지 주요 작동 모드):

CGI 모드(범용 게이트웨이 인터페이스)

FastCGI 모드(상주 CGI) ;

웹 모듈 모드(Apache 등 웹 서버가 실행되는 모드)

ISAPI 모드(버전 5.3 이후에는 지원되지 않음)

현재 사용되는 환경 통합 패키지의 모드는 웹 모듈 모드이며, FastCGI는 일반적으로 사용됩니다. 작업 개발 유형.

요약하자면 다시 쓰기 모드에는 Apache 지원이 필요하며 일반적으로 권장되지 않습니다. Apache 외에도 서버 소프트웨어에는 nginx, lightd 등이 포함됩니다.

(4) 호환 라우팅 형식

호환 라우팅 형식은 일반 라우팅 형식, 경로 정보 라우팅 형식 및 라우팅 형식 다시 쓰기의 기능을 결합합니다.

라우팅 형식: http://website/entry file?s=/group name/ 컨트롤러 이름/메소드 이름/매개변수 1/매개변수 값 1

참고: 호환되는 라우팅 형식에는 매개변수가 하나만 있습니다: 매개변수 이름 s, 나중에 s 매개변수 값으로 표시될 수 있음

예: http://www.1336 .com/index.php ?s=/Home/User/test/id/100, 확인 출력은 100으로 액세스가 성공했음을 나타냅니다.

(5) 확장: ThinkPHP의 라우팅 양식 구성

구성 파일 ThinkPHP /Conf/convention.php, ThinkPHP 기존 구성 파일

/* URL设置 */
&#39;URL_CASE_INSENSITIVE&#39;  =>  true,   // 默认false 表示URL区分大小写 true则表示不区分大小写
&#39;URL_MODEL&#39;             =>  1,

URL 액세스 모드, 선택적 매개변수 0, 1, 2, 3, 다음 네 가지 모드를 나타냄:

0(일반 모드)

1(Pathinfo 모드);

2(REWRITE 모드);

3(호환성 모드) 기본값은 Pathinfo 모드입니다

참고: 라우팅 양식의 구성 값은 주소 표시줄에 입력된 다른 형태의 라우팅 액세스에 영향을 주지 않습니다. 이 구성 항목의 값은 ThinkPHP 시스템에 의해 캡슐화된 URL 어셈블리 함수(U 함수)에 의해 생성된 URL 주소의 형식에 영향을 미칩니다.

ThinkPHP는 일반 모드를 포함하여 URL_MODEL 매개변수를 설정하여 정의할 수 있는 4가지 URL 모드를 지원합니다. , PATHINFO, REWRITE 및 호환성 모드.

1. 일반 모드: 'URL_MODEL'=>0,

http://serverName/appName/?m=module&a=action&id=1

2. PATHINFO 모드: 'URL_MODEL'=>1, (시스템 기본 모드)

기본적으로 URL_PATHINFO 모드를 사용하며 PATHINFO 모드에도 일반 모드가 포함되어 있습니다. 스마트 모드에는 두 가지 유형이 있습니다.

PATHINFO 일반 모드: 'PATH_MODEL'=>1,

이 모드의 URL 매개변수는 순서가 아닙니다. 예를 들어

http://serverName/appName/m/module/a/action/id/1
http://serverName/appName/a/action/id/1/m/module

PATHINFO 스마트 모드: 'PATH_MODEL'=> 2, (시스템 기본 모드)

이 모드는 자동으로 모듈과 작업을 식별합니다. 예를 들어

http://serverName/appName/module/action/id/1/
http://serverName/appName/module,action,id,1/

스마트 모드에서는 첫 번째 매개변수가 모듈 이름(또는 아래 설명된 경로 이름)으로 구문 분석되고 두 번째 매개변수는 작업으로 구문 분석됩니다(첫 번째 매개변수가 경로 이름이 아니라는 전제 하에) 다음 매개변수는 명시적으로 전달되며 쌍으로 표시되어야 합니다. 예:

http://serverName/appName/module/action/year/2000/month/01/day/01/

其中参数之间的分割符由PATH_DEPR参数设置,默认为"/",若设置PATH_DEPR为"^",则:

http://serverName/appName/module^action^id^1/

注意不要使用"@" 和"&"符号进行分割,该符号有特殊用途,可能会导致其他的冲突。

如果想要简化URL的形式可以通过路由功能(后面会有描述),在PATHINFO模式下,会把相关参数转换成GET变量,以及并入REQUEST变量,因此不妨碍应用里面的以上变量获取。

3、REWRITE模式:'URL_MODEL'=>2,

该URL模式和PATHINFO模式功能一样,除了可以不需要在URL里面写入口文件,和可以定义.htaccess 文件外。

例如,我们可以增加如下的.htaccess内容把所有操作都指向index.php文件。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

4、兼容模式:'URL_MODEL'=>3

兼容模式是普通模式和PATHINFO模式的结合,并且可以让应用在需要的时候直接切换到PATHINFO模式而不需要更改模板和程序,基本上可以支持任何的运行环境。

只需要传入PATHINFO 兼容模式获取变量VAR_PATHINFO,默认值为s,例如

http://serverName/appName/?s=/module/action/id/1/

会执行和上面的URL等效的操作,并且也可以支持参数分割符号的定义,例如在PATH_DEPR设置为"~"的情况下,下面的URL有效:

http://serverName/appName/?s=module~action~id~1

兼容模式的情况下面模板文件不用做任何更改,保持和PATHINFO模式的写法一样,只需要在切换URL模式的时候清空下模板缓存目录。

推荐教程:《TP5

위 내용은 thinkphp의 4가지 URL 모드 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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