カテゴリ: CodeIgniter 更新日: 2026/02/07

CodeIgniter 4のルーティング完全ガイド!GET・POSTを初心者が使い分ける方法

CodeIgniterでGET・POSTをルーティングで分ける方法
CodeIgniterでGET・POSTをルーティングで分ける方法

先生と生徒の会話形式で理解しよう

生徒

「CodeIgniterでWebサイトを作っていますが、データの送信方法によってURLの動作を変えるにはどうすればいいですか?」

先生

「それは『ルーティング』の設定で行います。特にGETとPOSTという2つの通信方法を区別して登録するのが基本ですよ。」

生徒

「GETとPOST……なんだか難しそうですね。使い分けの方法を教えてください!」

先生

「実はとてもシンプルです。今回はCodeIgniterでのルーティングの書き方を、初心者の方にも分かりやすく解説しますね!」

1. ルーティングとは何かを学ぼう

1. ルーティングとは何かを学ぼう
1. ルーティングとは何かを学ぼう

プログラミングの世界、特にWeb開発において「ルーティング(Routing)」という言葉は非常によく使われます。これは簡単に言うと、Webサイトにアクセスしてきたユーザーを「どのプログラムに案内するか」を決める道路標識や案内係のような役割を指します。

パソコンやスマートフォンでインターネットを見ているとき、私たちは「https://example.com/contact」といった「URL(ユーアールエル)」を入力しますよね。このURLを見たサーバー(情報を管理しているコンピューター)が、「あ、この人はお問い合わせページを見たいんだな」と判断して、正しい画面を表示してくれる仕組みがルーティングです。CodeIgniter(コードイグナイター)というPHPのフレームワークを使えば、この案内設定を自由自在にカスタマイズすることができるのです。

2. GETとPOSTの違いをやさしく解説

2. GETとPOSTの違いをやさしく解説
2. GETとPOSTの違いをやさしく解説

ルーティングを学ぶ上で避けて通れないのが、「GET(ゲット)」「POST(ポスト)」という2つの言葉です。これらは「HTTPメソッド」と呼ばれ、情報を送る際の種類を指します。

GETは、主に「情報を取得したいとき」に使います。例えば、ブログの記事を読んだり、検索結果を表示したりするときです。情報はURLの後ろに「?q=keyword」のようにくっついて送られるため、誰でも中身を見ることができます。まるで透明な封筒に入った手紙のようなものです。

対してPOSTは、「情報を新しく送りたいとき」に使います。お問い合わせフォームからメッセージを送信したり、会員登録でパスワードを送ったりする場合です。情報はURLには表示されず、隠された状態で送られます。こちらは中身が見えない茶封筒のようなイメージですね。この2つを適切に使い分けることが、セキュリティの高い安全なWebサイトを作る第一歩となります。

3. CodeIgniterでのルーティング設定ファイル

3. CodeIgniterでのルーティング設定ファイル
3. CodeIgniterでのルーティング設定ファイル

CodeIgniter 4でルーティングを設定するには、特定のファイルにプログラムを書き込む必要があります。そのファイルは、プロジェクトフォルダの中の app/Config/Routes.php という場所にあります。

このファイルの中に、「もしこのURLにGETでアクセスが来たらこの処理を動かす」「もしPOSTでアクセスが来たらこちらを動かす」というルールを書いていきます。最初は難しく感じるかもしれませんが、書き方のパターンは決まっています。基本的には、$routes という変数(データを入れる箱)に対して、命令を追加していくだけで設定が完了します。

4. GET送信用のルーティングを書く方法

4. GET送信用のルーティングを書く方法
4. GET送信用のルーティングを書く方法

まずは、最も基本的なGET通信のルーティングを見てみましょう。例えば、「お問い合わせ画面」を表示するための設定です。ユーザーがURLを叩いて画面を表示するだけの場合は、必ずGETを使います。


// お問い合わせページを表示するためのGET設定
$routes->get('contact', 'ContactController::index');

このコードの意味を解説します。最初の 'contact' はURLの最後に来る名前です。そして 'ContactController::index' は、その時に動かすプログラム(クラスとメソッド)を指定しています。これで、ブラウザで /contact にアクセスしたときに、お問い合わせ用の画面が表示されるようになります。

5. POST送信用のルーティングを書く方法

5. POST送信用のルーティングを書く方法
5. POST送信用のルーティングを書く方法

次に、フォームから入力内容を送信した後の処理、つまりPOST通信のルーティングを書きましょう。お問い合わせ内容を「送信ボタン」で送ったときなどは、これを使います。


// お問い合わせ内容を受け取るためのPOST設定
$routes->post('contact/send', 'ContactController::send');

ここでは get ではなく post という命令を使っています。URLは 'contact/send' とし、送信専用のプログラムである send という部分を動かすように設定しました。このように、同じ「お問い合わせ」関連でも、表示はGET、送信はPOSTとはっきり分けることが重要です。

6. 実際に動くお問い合わせフォームの例(HTML)

6. 実際に動くお問い合わせフォームの例(HTML)
6. 実際に動くお問い合わせフォームの例(HTML)

ルーティングを設定したら、次にHTML側の「送信フォーム」を準備する必要があります。ここで大切なのは、HTMLの method という属性に、ルーティングで設定したのと同じ種類(GETかPOSTか)を書くことです。今回はPOSTで送る例を作成します。


<form action="/contact/send" method="post">
    <label>お名前:</label>
    <input type="text" name="username">
    <button type="submit">送信する</button>
</form>

このコードでは、ボタンを押すと /contact/send というURLに向かって、POST形式でデータが飛んでいきます。サーバー側では、先ほど設定した $routes->post のルールが「あ、POSTで来たからあのプログラムを動かそう!」と反応してくれるわけです。

7. URLにパラメーターを含める便利なテクニック

7. URLにパラメーターを含める便利なテクニック
7. URLにパラメーターを含める便利なテクニック

時には、URLの一部を自由に変えたいことがあります。例えば「1番の記事」「2番の記事」のように、数字によって表示を変える場合です。これを「プレースホルダー」と呼びます。CodeIgniterでは (:num)(:any) という特別な記号を使って設定します。


// 記事のID(数字)をURLで受け取るGET設定
$routes->get('blog/view/(:num)', 'BlogController::show/$1');

この (:num) という部分は、「ここには数字が入りますよ」という意味です。ユーザーが blog/view/123 にアクセスすると、プログラム側に 123 という数字が渡されます。これにより、一つのルーティング設定だけで、何千記事あっても対応できるようになります。非常に効率的ですね。

8. エラーを防ぐ!ルーティングの注意点

8. エラーを防ぐ!ルーティングの注意点
8. エラーを防ぐ!ルーティングの注意点

ルーティングを書くときに初心者がやってしまいがちな失敗が、「順番の間違い」です。プログラムは上から順番に読み込まれるため、あまりに広範囲をカバーする設定を上に書いてしまうと、その下にある具体的な設定が無視されてしまうことがあります。

また、GETで設定しているURLに対して、間違えてPOSTでアクセスしようとすると「405 Method Not Allowed」というエラーが出ます。これは「そのURLはGET専用だから、POSTで来られても困るよ!」というコンピューターからの警告です。エラーが出たときは、まず Routes.php の記述と、HTMLの送信方法が一致しているかを確認しましょう。

9. セキュリティとルーティングの関係

9. セキュリティとルーティングの関係
9. セキュリティとルーティングの関係

なぜGETとPOSTをわざわざ分ける必要があるのでしょうか?それはWebサイトの安全を守るためです。例えば、データの削除やユーザー情報の更新といった「重要な操作」をGETで許可してしまうと、URLを直接入力するだけで誰でも操作できてしまう危険があります。これを防ぐために、データの変更を伴う処理は必ずPOSTに限定し、必要であれば「CSRF(シーエスアールエフ)対策」という、偽造された送信を防ぐ仕組みを併用します。CodeIgniterにはこれらのセキュリティ機能が標準で備わっているため、ルーティングを正しく設定するだけで安全性がぐっと高まります。

10. ルーティングの一覧を確認する方法

10. ルーティングの一覧を確認する方法
10. ルーティングの一覧を確認する方法

最後に、自分が書いたルーティングが正しく登録されているか確認する方法を紹介します。パソコンの「コマンドプロンプト」や「ターミナル」を使って、プロジェクトのフォルダで以下の命令を入力してみましょう。


php spark routes

これを実行すると、現在有効なすべてのルート設定が一覧で表示されます。どのURLがどのコントローラーに繋がっているのか、そしてGETなのかPOSTなのかが一目で分かります。設定がうまくいかないときは、この一覧を見て「自分の書いたルールがちゃんと認識されているか」を確認するのが上達の近道です。

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.8
Java&Spring記事人気No8
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説