PHPにおけるルーティングの基礎と.htaccessの使用方法


  1. ルーティングの概要: ルーティングは、ウェブアプリケーションのURLを特定の処理やコードに関連付ける方法です。PHPでは、URLのパス部分を解析し、適切なコントローラやアクションに関連付けることができます。

  2. ルーティングの実装: 以下は、シンプルなルーティングの実装例です。

<?php
// index.php
// ルーティングの定義
$routes = [
    '/' => 'HomeController@index',
    '/about' => 'AboutController@index',
    '/contact' => 'ContactController@index',
];
// URLのパスを取得
$path = $_SERVER['REQUEST_URI'];
// ルーティングのマッチング
if (array_key_exists($path, $routes)) {
    $controller = explode('@', $routes[$path])[0];
    $action = explode('@', $routes[$path])[1];
    // 適切なコントローラとアクションを呼び出す
    call_user_func([$controller, $action]);
} else {
    // ルートが見つからない場合の処理
    echo '404 Not Found';
}
?>

この例では、$routes配列にURLパスとコントローラ・アクションの関連付けを定義しています。$_SERVER['REQUEST_URI']を使用して、ユーザーのリクエストされたURLパスを取得し、$routes配列と照合します。一致するルートがあれば、関連するコントローラとアクションを呼び出します。一致するルートが見つからない場合は、404 Not Foundと表示します。

  1. .htaccessファイルの使用: .htaccessファイルを使用すると、Apacheウェブサーバーでルーティングを設定できます。以下は、シンプルな.htaccessファイルの例です。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

この例では、URLが既存のディレクトリやファイルと一致しない場合に、すべてのリクエストをindex.phpに転送します。[QSA,L]フラグは、クエリ文字列を保持し、ルーティング後に他のルールを適用しないよう指定します。

.htaccessファイルはウェブサーバーのルートディレクトリに配置する必要があります。

これらの基本的な手法とコード例を使用することで、PHPでのルーティングと.htaccessの使用方法についての理解を深めることができます。