PHPで利用できるマイクロフレームワークの一つに、Slim Frameworkというものがあります。今回は、Slim Frameworkで、302リダイレクトを行う方法を説明します。
Slim Frameworkでは、HTTPのリクエスト、レスポンスの情報をPSR-7の規格に準じた形で実装しているので、PSR-7のResponseクラスについての知識があると簡単に実装できます。
PSR-7におけるリダイレクト方法
こちらが、302リダイレクトを行うためのサンプルコードです。
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
$app->get('/test', function (Request $request, Response $response) {
$url = "http://yahoo.co.jp/";
return $response->withStatus(302)->withHeader('Location', $url);
});
$responseオブジェクトがもつwithStatus()メソッドでHTTPのステータスコード302を表現します。
リダイレクト先のURLは、HTTPヘッダのLocationで指定できるので、withHeader()で遷移先を指定すればOKです。
今回作ったプログラムの全体
今回作成した確認プログラムの全体は以下の通りです。
さすがSlimというだけあって、1ファイルだけで、非常にシンプルに実装できてしまいます。
<?php
// index.php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/test', function (Request $request, Response $response) {
$url = "http://yahoo.co.jp/";
return $response->withStatus(302)->withHeader('Location', $url);
});
$app->run();
プログラムの実行も、composerが入っていれば下記の2行でインストールと実行が行えてしまいます。
composer require slim/slim
php -S localhost:80 index.php
php -SでWebサーバを起動した後、ブラウザから"http://localhost/test"にアクセスすると動作を確認できます。
こちらもおススメ