【PHP】REQUEST_URIで現在のURLを取得する!書き方や使用例を紹介!

エンジニアに特化した転職エージェント!

・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方

それなら、キッカケエージェントにご相談!

キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!

また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!

転職エージェントに迷っている方、まずは無料でキャリア相談から!




(この記事は2022年6月8日に投稿されました。)

PHPのREQUEST_URIを使用すると、現在表示しているページのURLを取得することができます。

REQUEST_URIとは現在のページのURIを取得できるサーバー情報や実行時の環境情報の変数となります。

URIって何かと思いますが、とにかく現在のページのURLを取得できる変数だと思っていただいて構いません。

そして、現在のページのURLを相対パスとして取得するので、取得したURLを条件に、各ページでの処理を変更する際に便利です。

また、REQUEST_URI以外にもサーバーの情報を取得できる変数が多々ありますので、変数名を変更すると、他のサーバーの情報を取得することができます。

今回はPHPのREQUEST_URIで現在のURLを取得する方法について紹介していきます。

この記事はこんな方におすすめ
・現在、表示しているページのURLを取得したい人

REQUEST_URIとは

冒頭でも紹介しましたが、REQUEST_URIとは現在のページのURIを取得できるサーバー情報や実行時の環境情報の変数となります。

そもそもURIとは、「Uniform Resource Identifier」の略で、Web上にあるあらゆるファイルを認識するための識別子となります。

わかりにくいかと思いますが、URLと同じものと認識しても良いでしょう。

Sossy

簡単に言いますと、REQUEST_URIを使用することでサイトのURLを取得することができるということです。

REQUEST_URIの書き方

REQUEST_URIの書き方は下記のようになります。

$_SERVERの後ろに[]を付け、その中に「’RTEQUEST_URI’」と追記します。

すると、現時点のページのURLを取得することができます。

また、下記のコードのようにecho関数を使用することで、URLを画面上に出力することができるようになります。

REQUEST_URIで現在のURLを取得するサンプルコード

REQUEST_URIで現在のURLを取得するサンプルコードをご紹介します。

例えば、

実行結果

REQUEST_URIで現在のページのURLを取得した結果

MAMPを使用し、ローカルホストのサーバーでPHPを実行してみましたが、現在のURLが表示されています。

実際のサイトにREQUEST_URIを使って現在のURLを取得してみた

実際のサイトにREQUEST_URIを使って現在のURLを取得してみましたのでご紹介していきます。

下記のコードをheader.php追記して、WordPressで作成したサイトのそれぞれのページを表示してみました。

TOPページでREQUEST_URIを使用した場合

TOPページでREQUEST_URIを使用した場合の結果です。

実行結果

REQUEST_URIで実際のサイトの現在のページのURLを取得した結果(TOPページの場合)

TOPページでREQUEST_URIを使用した場合は、「/」が表示されます。

TOPページ以外ででREQUEST_URIを使用した場合

TOPページ以外でREQUEST_URIを使用した場合の結果です。

実行結果

REQUEST_URIで実際のサイトの現在のページのURLを取得した結果(TOPページ以外の場合)

TOPページ以外ででREQUEST_URIを使用した場合は、ドメイン以降に続く、それぞれのURLが文字列で表示されます。

今回はURLが「/aaa/sports」のように表示されていますが、パーマリンクを設定することで取得するURLを変更することが可能になります。

もし、WordPressでパーマリンクを設定する方法につきまして詳しく知りたい場合は、下記の記事をご参考ください。

REQUEST_URIの実際の使用例

REQUEST_URIの実際の使用例についてご紹介します。

REQUEST_URIは現在のページのURLを取得するため、各ページによって表示する値などを制御することができます。

例えば、「スポーツ一覧」のカテゴリーを持つアーカイブページには「スポーツ一覧」という文字を表示し、「球技」のカテゴリーを持つアーカイブページには、「球技」という文字を表示するようにします。

そして、「スポーツ一覧」と「球技」の両カテゴリーを持つアーカイブページには「スポーツ一覧 × 球技」という文字を表示するようにします。

すると、以下のようなコードで実施することができます。

⚫︎ header.php

実行結果

REQUEST_URIで取得したURLを条件にして各ページに表示する内容を変更した結果

階層的には「スポーツ一覧」の中に「球技」があるため、「スポーツ一覧」と「球技」のカテゴリーは親子関係となっています。

そのため、「スポーツ一覧」のカテゴリーページには「スポーツ一覧」が表示され、「球技」のカテゴリーページには、「スポーツ一覧 × 球技」が表示されています。

Sossy

もし、他にもカテゴリーを増やしたい場合はif文を追加しましょう。
また、分岐が多くなる場合はswitch文に置き換えても良いかと思います。

REQUEST_URI以外に使用できるサーバー情報の変数一覧

今回は、現在のURLを取得するためにREQUEST_URIを使用しましたが、これ以外にも、サーバー情報を取得できる変数がたくさん存在します。

そのため、ここでは使用できるサーバー情報の変数一覧についてご紹介していきます。

変数名説明
PHP_SELFスクリプトのファイル名
SERVER_ADDRサーバーのIPアドレス
SERVER_NAMEサーバーのホスト名
SERVER_SOFTWAREレスポンスヘッダに置かれている
SERVER_PROTOCOLリクエストされた際のプロトコル名とバージョン
REQUEST_METHODリクエストのメソッド名(GETやPOSTなど)
REQUEST_TIMEリクエスト開始時のタイムスタンプ
QUERY_STRINGページがアクセスされた際に付加された検索引数
DOCUMENT_ROOTドキュメントのルートディレクトリ
HTTP_ACCEPTヘッダの値
HTTP_ACCEPT_CHARSETAceept-Charsetヘッダの値(utf-8とか)
HTTP_ACCEPT_ENCODINGAccept-Encodingヘッダの値(gzipとか)
HTTP_ACCEPT_LANGUAGEAccept-Languageヘッダの値(jaとか)
HTTP_CONNECTIONConnectionヘッダの値(Keep-Aliveとか)
HTTP_HOSTホスト名
HTTP_REFERER現在のページに遷移する前のURL
HTTP_USER_AGENTUser-Agentヘッダの値
HTTPSHttpsかどうか(HTTPSではない場合、空が返される)
REMOTE_ADDRユーザーのIPアドレス
REMOTE_HOSTアクセスしているホスト名
REMOTE_PORTアクセスに使用されているポート番号
SCRIPT_FILENAMEスクリプトの絶対パス
SERVER_ADMINWebサーバー設定ファイルのSERVER_ADMINにセットされている値
SERVER_PORTWebサーバーの通信ポートとして使用されているポート番号
SERVER_SIGNATUREサーバーのバージョン名とバーチャルホスト名の文字列
PATH_TRANSLATED現在のスクリプトのファイルシステム上のパス
SCRIPT_NAME現在のスクリプトパス
PHP_AUTH_DIGESTHTTPダイジェスト認証時のAuthorizationヘッダの値
PHP_AUTH_USERHTTP認証済みユーザー名
PHP_AUTH_PWHTTP認証済みユーザーのパスワード
AUTH_TYPEHTTP認証済みの認証形式
PATH_INFO実際のスクリプトファイル名とクエリ文字列の間にある、クライアントが提供するパス名
ORIG_PATH_INFOPHPでの処理前のPATH_INFO

まとめ

⚫︎ REQUEST_URIとは現在のページのURIを取得できるサーバー情報や実行時の環境情報の変数である
(相対パスで取得)

⚫︎ TOPページでREQUEST_URIを使用した場合は、「/」を取得する

⚫︎ TOPページ以外ででREQUEST_URIを使用した場合は、ドメイン以降に続く、それぞれのURLを取得する

⚫︎ REQUEST_URIの実際の使用例として、各ページによって表示する値などを制御することができる
(表示する内容が条件によって異なる場合に便利)