PHPでURLリライト(rewrite)を使ってみる

2023/11/03 (金) - 00:00 PHP&CMSServer

WordPressのようなCMSやLaravelのようなPHPフレームワークでは、Webサーバのrewrite機能でURLを取得して処理分岐をするケースが多いです。

rewrite機能(URLのリライト)とは、ユーザなどがURLにアクセスした際そのリクエストに応じてサーバーやプログラムが適切なレスポンスを返す処理です。例えば、https://example.com/hoge/というURLにアクセスしているけど/hoge/というディレクトリを表示させるのではなく、実際は内部処理で https://example.com/?page=hogeという内容を表示させたりできる…という機能になります。

今日はURL rewriteをつかってPHPの簡単な実験をしてみます。

Webサーバーの設定

Apacheの場合は対象ディレクトリの.htaccessや、https.confの対象のディレクトリ設定箇所に以下を記述します。予めmod_rewriteを有効にしている前提となります。

RewriteEngine On
RewriteRule ^ index\.php [L]

nginxの場合は、nginx.confの対象ディレクトリの設定箇所に以下を記述します。

location / {
 index index.php;
 rewrite ^ /index.php last;

上記を記述し反映すると、対象のディレクトリにアクセスするとindex.phpの内容が表示されます。

PHPの記述

テストでindex.phpに以下を記述し、アクセスします。すると…

<?php $url = $_SERVER['REQUEST_URI']; ?>

表示結果は

/

と表示されるはずです。また/test/にアクセスすると

表示結果

/test/

と表示されるはずです。

URLによって処理を分岐する

以下のようなテストプログラムを書いてみます。

<p><?php $url = $_SERVER['REQUEST_URI']; ?></p>
ディレクトリ:<?php  echo $url; ?>
<?php if($url=='/'){ ?>
<h1>トップページです</h1>
<?php }elseif($url=='/company/'){ ?>
<h1>会社概要ページです</h1>
<?php }elseif($url=='/service/'){ ?>
<h1>サービスページです</h1>
<?php }else{ ?>
<h1>ページが見つかりません</h1>
<?php } ?>

/にアクセスすると…

表示結果

ディレクトリ:/
トップページです

/company/にアクセスすると…

表示結果

ディレクトリ:/company/
会社概要ページです

アクセスしたイメージ

と表示されると思います。以上、簡易的なURLRewriteの実験でした。

おしまい

タグ:

記事をシェアする

  • facebookでシェアする
  • twitter(X)でシェアする
  • LINEでシェアする
  • はてなブックマークでシェアする
  • Pocketでシェアする
  • Pinterestでシェアする

トラックバック & ピンバック

この記事へのトラックバックURI
https://weblog.walk-life.me/php_url_rewrite/trackback/

コメント

コメントは下記からどうぞ

ページの先頭へ