ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp の 4 つの URL モードの紹介

thinkphp の 4 つの URL モードの紹介

尚
転載
2020-05-05 09:10:535385ブラウズ

thinkphp の 4 つの URL モードの紹介

ルーティング: プロジェクト内の特定のメソッドの URL アドレスにアクセスします。簡単に理解すると、URL アドレスがわかります。

ThinkPHP では、システムは 4 つのルーティング フォームを提供します (前のルーティング 形式:index.php?p=platform&c=controller&a=method; pca)

概要: pca はプラットフォーム、コントローラー、メソッド、thinkPHP の mca はグループ、コントローラー、メソッド

①共通形式ルーティング;

②Pathinfo フォーム ルーティング;

③フォーム ルーティングの書き換え;

④互換性のあるフォーム ルーティング

#詳細は以下で説明

(1) 通常フォーム ルーティング

取得フォーム ルーティングとも呼ばれ、すべての情報は get

ルーティング フォーム: http://website/entry file (index.php)?m=group &c=controller name&a を介して渡されます。 =メソッド&パラメータ名=パラメータ値

例: ホーム グループのユーザー コントローラのテスト メソッドにアクセスし、パラメータ id=1

http://www.1336.com/ を渡します。 index.php?m=Home&c=User&a=test&id=1

は、$_GET['id']、出力 1 を通じて確認できます。したがって、検証は成功です。

欠点: URL によって渡されたすべてが表示されますが、安全でも見栄えも良くありません。そのため、あまり使用されません

(2) pathinfo() フォームルーティング (PHP のデフォルトルーティングを考えてください)

ルーティングフォーム: http://website/entry file (index.php)/group 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 を入力します。上記のパス情報はここでも使用されています。エントリ ファイルを削除して更新してください。出力 100 が見つかりました。 OK~設定完了

拡張:

PHP 動作モード (5 つの主要な動作モード):

CGI モード (ユニバーサル ゲートウェイ インターフェイス);

FastCGI モード(常駐 CGI);

CLI (コマンド ライン操作);

Web モジュール モード (Apache などの Web サーバーを実行するためのモード);

ISAPI モード (5.3 は廃止されました)

現在使用している環境統合パッケージのモードはWebモジュールモードであり、作品開発ではFastCGI常駐モードが一般的です。

要約すると、書き換えモードには Apache のサポートが必要であり、通常は推奨されません。サーバーソフトウェアにはApacheの他にnginx、lightdなどもあります。

(4) 互換ルーティング フォーム

互換ルーティング フォームは、通常のルーティング フォーム、pathinfo ルーティング フォーム、および書き換えルーティング フォームの機能を組み合わせたものです。

ルーティング フォーム: http:/ /website/ Entry file?s=/グループ名/コントローラ名/メソッド名/パラメータ 1/パラメータ値 1

注: 互換性のあるルーティング フォームにはパラメータが 1 つだけあります: パラメータ名 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、次の 4 つのモードを表します:

0 (通常モード);

1 (Pathinfo モード);

2 (REWRITE モード) );

3 (互換モード) デフォルトは Pathinfo モードです。

注: ルーティング フォームの構成値は、アドレス バーに入力された他の形式のルーティング アクセスには影響しません。この構成項目の値は、ThinkPHP システムによってカプセル化された URL アセンブリ関数 (U 関数) によって生成される URL アドレスの形式に影響します。

ThinkPHP は 4 つの URL モードをサポートしており、これらは URL_MODEL パラメーターを設定することで定義できます。通常モード、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/
# などのモジュールと操作を自動的に識別します。 ##スマート モードでは、最初のパラメータはモジュール名 (または後述のルート名) に解析され、2 番目のパラメータはオペレーションに解析されます (最初のパラメータがルート名ではないという前提の下)。次のパラメータは明示的であり、式によって渡されるため、ペアで指定する必要があります。たとえば:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。