프레임워크의 URL 액세스 프로세스



URL 디자인 사양

6.0 URL 액세스는 라우팅의 영향을 받습니다. 정의되거나 일치하는 경로가 없는 경우(그리고 강제 라우팅 모드가 켜져 있지 않은 경우)

http://serverName/index.php(或者其它入口文件)/控制器/操作/参数/值…

자동 다중 애플리케이션 모드가 켜져 있는 경우 URL은 일반적으로

http://serverName/index.php/应用/控制器/操作/参数/值...

일반 모드 URL 액세스는 더 이상 지원되지 않지만 매개 변수는 일반적인 방법으로 값 전달을 지원할 수 있습니다

서버가 PATHINFO를 지원하지 않는 경우, 호환 모드를 사용하여 다음에 액세스할 수 있습니다:

http://serverName/index.php?s=/控制器/操作/[参数名/参数值...]

URL 다시 쓰기 규칙

URL 다시 쓰기를 통해 응용 프로그램의 항목 파일 index.php를 숨기는 데 사용할 수 있습니다(다른 항목 파일일 수도 있지만 URL rewriting은 일반적으로 하나의 항목 파일만 설정할 수 있습니다. 다음은 해당 서버의 구성 참조입니다.

[Apache]

1 mod_rewrite.so 모듈은 httpd.conf 구성 파일에 로드됩니다.

2.AllowOverride 없음 없음을 모두로 변경

3. 다음 내용을 .htaccess로 저장합니다. 파일은 응용 프로그램 항목 파일

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

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

[IIS](windows)

과 동일한 디렉터리에 저장됩니다.

서버 환경이 ISAPI_Rewrite를 지원하는 경우 httpd.ini 파일을 구성하고 다음 콘텐츠를 추가할 수 있습니다.

RewriteRule (.*)$ /index\.php\?s= [I]

IIS 상위 버전에서는 web.Config를 구성하고 중간에 다시 쓰기 노드를 추가할 수 있습니다.

<rewrite>
 <rules>
 <rule name="OrgPage" stopProcessing="true">
 <match url="^(.*)$" />
 <conditions logicalGrouping="MatchAll">
 <add input="{HTTP_HOST}" pattern="^(.*)$" />
 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
 </conditions>
 <action type="Rewrite" url="index.php/{R:1}" />
 </rule>
 </rules>
 </rewrite>

[ Nginx ]

낮은 버전의 Nginx에서는 PATHINFO가 지원되지 않지만 Nginx.conf에서 전달 규칙을 구성하여 구현할 수 있습니다.

location / { // …..省略部分代码
   if (!-e $request_filename) {
   		rewrite  ^(.*)$  /index.php?s=/  last;
    }
}

실제로는 ThinkPHP에서 제공하는 호환 URL로 내부적으로 전달됩니다. PATHINFO를 지원하지 않는 다른 WEB 서버 환경에서는 해결 가능합니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ