0

URL が次のような場合、PHP から変数 GET 変数にアクセスするにはどうすればよいですか: http://example.com/somehash

次のような場合の方法は明らかに知っています: http://example.com/f.php?h=somehash

ここでは $_GET["h"] を使用しますが、最初のケースではどうすればよいかわかりません...

4

5 に答える 5

3

答えは、できないということです。少なくとも、追加の Web サーバー構成がないわけではありません。通常、PHP でこのような「クリーンな URL」を実現するために、Web サーバー ( mod_rewriteApache など) で実行される URL の書き換えがあります。これが行うことは、リクエストをサイレントにリダイレクトすることです

http://example.com/somehash

のスクリプトによって処理される

http://example.com/f.php?h=somehash

これにより、ブラウザにクリーンな URL を表示しながら、PHP$_GETは通常どおりにデータを取り込むことができます。

StackOverflow または Google を検索して、きれいな URL の URL 書き換えを行う方法の例をいくつでも見つけることができます。

于 2012-12-05T19:16:39.760 に答える
0

サーバーに URL を整形済みの URL に変更する書き換えルールがある場合は、通常どおりアクセスできます。($_GET) これは、スクリプトが URL を同じように解釈するためですが、mod-rewrite ルールが表示される URL を変更して、より見やすく/簡単にリンクバックできるようにするためです。

詳細については、example.php/example についての回答が必要です。

于 2012-12-05T19:18:21.547 に答える
0

ここには複数の要素があります。ユーザーが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']あなたが望むパスをピックアップするために使用できるようになります。

于 2012-12-05T19:18:53.247 に答える
0

書き換えルールを使用して適切に実行したい場合もありますが、最初に指定された URL を解決できるように書き換えルールが既に設定されていると仮定すると、基本的な PHP を使用して URI セグメントを見つけることができます...

function uriSegments()
{
    return explode("/", $_SERVER['REQUEST_URI']);
}

$segments = uriSegments();

echo $segments[1];

それはあなたに「somehash」を与えるはずです

于 2012-12-05T19:20:53.277 に答える
0

PHP から$_SERVER['REQUEST_URI"]値を参照し、必要に応じてテキスト変換 (部分文字列、正規表現) を適用できますが、値を直接使用する場合はうまくいくはずです。

于 2012-12-05T19:21:08.987 に答える