サーバーサイドの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);
コメント