htaccessのRewriteでGETパラメータを無理やり引き継ぐPHPコード
.htaccessで、Rewrite Ruleを使っている場合、通常は以下のようにhtaccess内に記述する事で、「?以降」の文字列を「$_GET」に代入させる事ができるようになります。
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^/test/$ /test.php?%1
RewriteBase /
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^/test/$ /test.php?%1
・・・でも、何らかの事情で、.htaccessをこれ以上使えないとか、いじくり回したくない場合、別の方法でGETパラメータを無理やり引き継がせる必要に迫られます。
というわけで、PHPコードでなんとかする事にしましたw
function parse_query_string($allow_list = array()){
$req = $_SERVER["REQUEST_URI"];
if(strpos($req, "?") !== FALSE){
list($req, $query_strings) = explode("?", $req);
$query_strings = explode("&", $query_strings);
foreach($query_strings as $query_string){
list($key, $value) = explode("=", $query_string);
if(in_array($key, (array)$allow_list)){$_GET[$key] = urldecode($value);}
}
}
}
$req = $_SERVER["REQUEST_URI"];
if(strpos($req, "?") !== FALSE){
list($req, $query_strings) = explode("?", $req);
$query_strings = explode("&", $query_strings);
foreach($query_strings as $query_string){
list($key, $value) = explode("=", $query_string);
if(in_array($key, (array)$allow_list)){$_GET[$key] = urldecode($value);}
}
}
}
使い方:
parse_query_string(array("page", "max"));
上記の例では、$_GET["page"]、$_GET["max"]のみ、$_GETパラメータを引き継がせる事ができるようになります。
この記事の最終更新日:2019/09/02
最初に記事を書いた日:2019/09/02
この記事をシェアする
関連記事
- ・外部メールサーバーからメール送信するPHPの関数(簡略版)
- ・TinyMCEにelFinderを搭載した環境で、ファイルを選択できるようにする方法
- ・秒速でPHPのフォームにreCAPTCHA v3を導入するサンプルコード
- ・RewriteRuleが効いているURLで、?以降の文字列を取得する方法
- ・ワードプレスでコメントを完全無効にする方法【コメントスパム対策】
- ・MacでPHP環境のローカルサーバーを立ち上げる方法
- ・画像ファイルをリサイズして、データで返す
リサイズした結果を、ファイルではなく変数に返す。 - ・サーバー内の全てのファイルから、文字列検索
HTTPS化作業に使える - ・PHPで、指定したディレクトリ以下のファイル一覧を再帰的に取得
- ・Googleストリートビューで建物内部が表示されないようにする
Google Maps API v3