ホームページ >バックエンド開発 >PHPチュートリアル >preg_match を使用して URL をインターセプトし、パラメーターの受け渡しに失敗する方法は?
ローカルで呼び出される
と同じように、2つのWebサイトが同じデータを呼び出せるように、1つのWebサイトで別のWebサイトのデータを呼び出したいと考えています。
例: 私の Web サイト a と Web サイト b
次のように入力すると: http://www.a.com/x.php/123/456.rar
実際に呼び出されるのは次のとおりです: http://www.b .com/123/456.rar (実際のファイル保存アドレス)
ダウンロードすると、www.a.com からダウンロードされたことが表示されます。
私の x.php は次のようなものです:
<?php header("content-Type: text/html; charset=Utf-8"); $SERVER=$_SERVER["REQUEST_URI"]; preg_match("/php\/([\s\S]+)\.rar/",$SERVER,$url); $urlname=$url[1]; $songurl='http://www.b.com/'.$urlname.'/'; header("location:$songurl"); ?>
このコードを通じて、最初の URL の 123 が 2 番目の URL に渡されます。
しかし、上記のコードは正常に通過しませんでした:
http://www.a.com/x.php/123/456.rar と入力すると、表示される 2 番目の URL は次のとおりです:
http://www.b.コム。 URL に「123」が表示されません。2 番目の URL に渡されたパラメータ「123」と「456」を取得するには、どのような変更を行う必要があるか教えてください。
1. まず、
$_SERVER["REQUEST_URI"] の内容が x.php/123/456.rar であるかどうかを確認します
2. 正規表現が実際に
preg_match("/ php /([sS]+.rar)/",$SERVER,$url);
$urlname=$url[1];
$songurl='http://www.b.com/'.$urlname; // このようにして、接尾辞が rar