ホームページ >PHPフレームワーク >ThinkPHP >thinkphp ルーティングが変換されない問題を解決する方法
1. 問題の説明
開発に ThinkPHP を使用すると、ルーティング操作を実行すると、ページが正しく表示されないという状況に遭遇することがあります。期待したインターフェイスにジャンプしません。
たとえば、URL「www.example.com/home/do」を通じて「HomeController.php」の「do」メソッドにアクセスしたいと考えていますが、実際にはこのメソッドにアクセスできません。同時に、エラーメッセージも表示されず、起動できないことがわかりました。
2. 原因分析
ThinkPHP では、ルーティングは URL サフィックスによって照合されます。 URL にサフィックスを使用しない場合、ThinkPHP はアクセスしたいメソッドがコントローラーのデフォルトのメソッドであるとみなします (デフォルトのメソッド名は通常「index」です)。
たとえば、URL「www.example.com/home/index」を使用すると、デフォルトで「HomeController.php」の「index」メソッドにアクセスします。
URL "www.example.com/home/do" を使用すると、サフィックスが使用されていないため、ThinkPHP は "index" メソッドにアクセスしたいと考えます。 "メソッドはコントローラ内に存在しないため、ページアクセスは失敗します。
3. 解決策
1. 「/」サフィックスを使用します
URL の末尾にスラッシュ「/」を追加すると、ルート不一致の状況は回避できます。たとえば、URL「www.example.com/home/do/」を使用して、「HomeController.php」の「do」メソッドにアクセスできます。
同時に、開発に 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 中国語 Web サイトの他の関連記事を参照してください。