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の実験でした。
おしまい♥
おすすめ記事
- WordPressの記事関数を外のPHPから呼び出す
- macOSにnginxをインストールし、ドキュメントルートを変更
- さくらのレンタルサーバーでMovable Type(MT)の管理画面がForbiddenになる件
- Movable Type(MT)で他ブログの記事一覧モジュールをインクルード
- EC-CUBE4で会員情報と注文(受注)情報をリセットする
トラックバック & ピンバック
- この記事へのトラックバックURI:
- https://weblog.walk-life.me/php_url_rewrite/trackback/