ルーティング: プロジェクト内の特定のメソッドの 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=1http://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/パラメーター値 nhttp://www.1336.com/index.php/Home/User/test/id/ 100メソッド内に$_GET['id']があり、100が出力されます。検証は成功です。(3)ルーティング フォームの書き換え (rewrite)ルーティング フォーム: http://URL/グループ名/コントローラー名/メソッド名/パラメーター 1/パラメーター値 1 /パラメータ n/パラメータ値 nthinkPHP のデフォルトのルーティング フォーム Pathinfo() ルーティングとの違いは、エントリ ファイルが欠落していることです注: このルーティング フォームは直接使用できません。構成が完了した後にのみ使用してください。構成手順:1. Apache で httpd.conf を構成し、拡張書き換えモジュールを有効にします;2.仮想ホスト構成ファイル。このファイルは Apache ディレクトリ conf/extra/httpd-vhosts にあり、構成の書き換えが可能です。現在のサイトの書き換えが許可されていることを示します#针对目录的详细配置 <Directory> #允许所有访问 allow from all #允许重写 AllowOverride all #表示允许站点显示文件目录结构 Options +indexes </Directory>
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设置 */ 'URL_CASE_INSENSITIVE' => true, // 默认false 表示URL区分大小写 true则表示不区分大小写 'URL_MODEL' => 1,
http://serverName/appName/?m=module&a=action&id=1
http://serverName/appName/m/module/a/action/id/1 http://serverName/appName/a/action/id/1/m/module
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 中国語 Web サイトの他の関連記事を参照してください。