PHPでHTTPリクエストをリダイレクトする方法

php-http-request-redirectのアイキャッチ画像 Windows

サーバーサイドのPHPで、ブラウザ等のクライアントからHTTPリクエストを受け、異なる宛先へリダイレクトする方法です。

ここでは、クライアントから「http://<ip1>:<port1>/api/functions」がリクエストされ、「http://<ip2>:<port2>/api/functions」にリダイレクトするものとします(”api”は固定、”functions”は可変)。
山括弧<…>で囲まれている箇所は、ご自身の環境に合わせて書き換えて下さい。

// リクエストURLの取得
if(isset($_SERVER['REQUEST_URI'])){
    // Apacheの場合
    $original_url = $_SERVER['REQUEST_URI'];
}elseif(isset($_SERVER['HTTP_X_ORIGINAL_URL'])){
    // IISの場合
    $original_url = $_SERVER['HTTP_X_ORIGINAL_URL'];
}else{
    // 取得できなかった
}

// リクエストAPIの取得
preg_match('/api\/([a-zA-Z0-9\/\-]+)/', $original_url, $api);
$request_api_function = $api[1];  // functionsを抽出
if(!isset($request_api_function)){
    // 取得できなかった
}

// リクエストのクエリストリング取得
$query_string = $_SERVER['QUERY_STRING'];
if(!empty($query_string)){ $query_string = "?$query_string"; }

// リダイレクト
$redirect_url_base = 'http://<ip>:<port>/api/';  # リダイレクト先のベースURL
$redirect_url = $redirect_url_base."$request_api_function$query_string";
header("Location: $url", false, 307);

TIPS

  • IISとWebサイト・CGIの自動構築についてはこちらをご覧下さい。
  • IISからPHPを実行する方法はこちらをご覧下さい。
  • リダイレクト先が異なるドメインの場合は、こちらを参考にリダイレクト先でCORS対応を行って下さい。

コメント

タイトルとURLをコピーしました