サーバーからチャンクでデータがプッシュされるクライアント側のjsが重いWebアプリケーションを構築しています。
次のような URL を取るわかりやすい URL ソリューションのソリューションを実装しようとしています。
これは、目に見えない一連の変数に相当します。したがって、次のように処理される可能性があります。
http://exmample.com/index.php?loc=ロンドン&type=2&priceCat=10-15
わかりやすい URL をパラメーターとして渡し、完全な URL を取得することで値を取得します。
私の最初の実装では、mod_rewrite ルールを使用して、わかりやすい URL を抽出するスクリプトに転送し、データベースに一致するわかりやすい URL をクエリし、マップ先のすべてのパラメーターを含む完全な URL を返し、これを使用して URL 文字列を作成し、Web に転送しました。次に、パラメーターを Web アプリのフロント側に抽出します。
ただし、php header("Location: http://example.com ") 関数を使用すると、わかりやすい URL が失われるため、params を含む完全な URL が表示されます。これは、私が満たそうとしている二次的な要件の 1 つです。
次に、私の Web アプリは js が重いので、ページをレンダリングしてから、db から Web アプリにパラメーターを ajax する必要があると考えました。これが最善の方法ですか、それとも私が知らないこれを達成するための別のトリックはありますか?
クライアント側でjsが有効になっていないことは問題ではありません。
添付のコードは、私の初期実装の概要を示しています。
//get the friendly url as a parameter
$goto = explode('=',$_SERVER['QUERY_STRING']);
//$goto[1] = SomethingHere-or-there
//build the friendly URL string
$forwardingURL = 'Location:http://'.$_SERVER['HTTP_HOST'].'/'.getForwardedURL($goto[1]);
//will be http://exmample.com/index.php?loc=London&type=2&priceCat=10-15
header($forwardingURL);
//function that returns the full url param string from the friendly url
function getForwardedURL($friendlyURL){
$friendlyURL = mysql_escape_string($friendlyURL);
$query = "
SELECT url
FROM FriendlyURLmapping
WHERE friendly_url = \"$friendlyURL\"";
$resultP = mysql_query($query)
//the full parametised URL will be in $row
$row = mysql_fetch_array($resultP, MYSQL_ASSOC);
return $row["url"];
}