URL が次のような場合、PHP から変数 GET 変数にアクセスするにはどうすればよいですか: http://example.com/somehash
次のような場合の方法は明らかに知っています: http://example.com/f.php?h=somehash
ここでは $_GET["h"] を使用しますが、最初のケースではどうすればよいかわかりません...
URL が次のような場合、PHP から変数 GET 変数にアクセスするにはどうすればよいですか: http://example.com/somehash
次のような場合の方法は明らかに知っています: http://example.com/f.php?h=somehash
ここでは $_GET["h"] を使用しますが、最初のケースではどうすればよいかわかりません...
答えは、できないということです。少なくとも、追加の Web サーバー構成がないわけではありません。通常、PHP でこのような「クリーンな URL」を実現するために、Web サーバー ( mod_rewrite
Apache など) で実行される URL の書き換えがあります。これが行うことは、リクエストをサイレントにリダイレクトすることです
http://example.com/somehash
のスクリプトによって処理される
http://example.com/f.php?h=somehash
これにより、ブラウザにクリーンな URL を表示しながら、PHP$_GET
は通常どおりにデータを取り込むことができます。
StackOverflow または Google を検索して、きれいな URL の URL 書き換えを行う方法の例をいくつでも見つけることができます。
サーバーに URL を整形済みの URL に変更する書き換えルールがある場合は、通常どおりアクセスできます。($_GET) これは、スクリプトが URL を同じように解釈するためですが、mod-rewrite ルールが表示される URL を変更して、より見やすく/簡単にリンクバックできるようにするためです。
ここには複数の要素があります。ユーザーがhttp://example.com/some-pageexample.com
をリクエストすると、接続先の Web サーバーがドメインとパスを要求する HTTP リクエストを受け取りますsome-page
。
Web サーバーはそれを取得し、ドメインを適切な仮想ホストに一致させてから、そのドメインにリクエストを渡します。some-page
ドメインのドキュメント ルートに指定されたファイルが存在しない可能性があるため、Web サーバーから404 Not Found
エラー メッセージが返されます。
既知のファイルまたはディレクトリに一致しないすべてのリクエストをリダイレクトして、index.php
. Apache を使用している場合は、HTTP 書き換えルールを使用してこれを実現できます。Apache がリクエストを送信するとき、通常は完全に変更されません。$_SERER['REQUEST_URI']
あなたが望むパスをピックアップするために使用できるようになります。
書き換えルールを使用して適切に実行したい場合もありますが、最初に指定された URL を解決できるように書き換えルールが既に設定されていると仮定すると、基本的な PHP を使用して URI セグメントを見つけることができます...
function uriSegments()
{
return explode("/", $_SERVER['REQUEST_URI']);
}
$segments = uriSegments();
echo $segments[1];
それはあなたに「somehash」を与えるはずです
PHP から$_SERVER['REQUEST_URI"]
値を参照し、必要に応じてテキスト変換 (部分文字列、正規表現) を適用できますが、値を直接使用する場合はうまくいくはずです。