atm次の4行を使用して、ユーザーをWebサイトの別のページにリダイレクトしています。
<?php
header("Status: 301 Moved Permanently");
header("Location: ./content/index.html");
exit;
?>
ただし、http://< url >?param=blah
などのHTTPクエリ文字列変数の使用には問題があります
これらは当然ながらURLに追加されません。
これを実装するためのスマートな動きはありますか?
あいさつ
<?php
header("Status: 301 Moved Permanently");
header("Location:./content/index.html?". $_SERVER['QUERY_STRING']);
exit;
?>
リダイレクトを行い、クエリ文字列が渡されないときに余分な疑問符が表示されないようにするには、次を使用します
function preserve_qs() {
if (empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], "?") === false) {
return "";
}
return "?" . $_SERVER['QUERY_STRING'];
}
header("Status: 301 Moved Permanently");
header("Location: ./content/index.html" . preserve_qs());
もう1つのオプションを追加したい...
とにかく-他の人が言ったように、(。htaccess)mod_rewriteを使用するのがおそらく最良のオプションでしょう。
しかしながら、
PHP => 2つのオプションがあります:
$_SERVER['QUERY_STRING']
_を使用してリダイレクトURIを追加しますhttp_build_query($_GET);
オプション2-利点(+)
$_GET
_パラメータを簡単に追加(または削除)できます。$_GET['new_param']="new value";
_(追加)unset($_GET['param_to_remove']);
(削除)$_GET
_ =>環境に依存しないhttp_build_query()
の最初のパラメーターは実際には任意の配列またはオブジェクトにできるため、必要に応じて_$_GET
_または$o = new YourObject();
から_$_POST
_のような要求を作成できます。オプション2-欠点(-)
詳細については http://www.php.net/manual/en/function.http-build-query.php -a PHPについてのマニュアルのサイトhttp_build_query()
関数_Returns a URL-encoded string.
_
$_SERVER['QUERY_STRING']
を使用して、リダイレクトの最後に追加することをお探しの場合があります。
編集:返信が少し遅れたことがわかりました。
まず、MODの書き換えでリダイレクトしないのはなぜですか?
ただし、とにかく、$ _ SERVER ['QUERY_STRING']をURLの末尾に連結できます
また、このタスクに mod_rewrite を使用することをお勧めします。これにより、柔軟性を高めることができます。
_$_SERVER['REQUEST_URI']
_または_QUERY_STRING
_を追加します。 print_r($_SERVER);
を実行して、要求されたURLに関する詳細情報を表示します。