サブディレクトリ配下をドキュメントルートとして読むように設定する

メンテナンス商用無料イラスト Web制作

本番環境はルートディレクトリで運用し、テストの環境のみサブディレクトリで運用したい場合、CSSや画像のパスが異なるため公開時にすべてのパスを変更しなければなりません。

パスをすべて変更するのは面倒かつ変更漏れのリスクもあるため、パスの指定は本番・テストとも同じにしておきたいところです。

そこで、サブディレクトリ自身をドキュメントルートとして使用できるよう設定し、テスト→本番へそのままファイルをアップすることができるようにしていきます。

画像、CSS、JavaScriptのパス

サブディレクトリ/hoge/配下で発生したリクエストに対してのみ、URLの先頭に/hoge/を付けてリダイレクトするよう.htaccessに追記します。

Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} /hoge/
RewriteCond %{REQUEST_URI} !/hoge/
RewriteRule ^(.*)$ hoge/$1 [L,R]

/hoge/の部分を任意のものに変更してください。

PHPの$_SERVER['DOCUMENT_ROOT']

PHPで外部ファイルをインクルードしている場合など、$_SERVER['DOCUMENT_ROOT']を使用している箇所は.htaccessではパスが変更できないため別途設定が必要です。
今回はテストということなので$_SERVER['DOCUMENT_ROOT']に無理矢理サブディレクトリ名を追加します。(本番環境での使用はおすすめしません)

変数設定用のPHPファイルを作る

変数設定用のPHPファイルを作り、$_SERVER['DOCUMENT_ROOT']の末尾に/hogeを追加するよう設定します。このファイル自身の名前は仮でconfig.phpという名前にしました。

<?php
$_SERVER['DOCUMENT_ROOT'] .= '/hoge';

config.phpの処理を先に実行するよう設定する

PHPファイルを読み込む前に、先程作ったconfig.phpを先に処理してもらうよう設定します。
メモ帳やテキストエディタで下記の内容を記述し、.user.iniという名前で保存します。
そして、保存した.user.iniファイルをサブディレクトリ内に設置します。
.user.iniを設置したディレクトリ配下ではphp.iniの内容は.user.iniで上書きされるため、php.iniの設定を汚す心配がありません。

auto_prepend_file = サーバーのホームディレクトリからconfig.phpまでのパス

ひととおり終わったらサイトにアクセスして表示を確認します。
テスト環境であればこのくらいで十分ではないでしょうか。

タイトルとURLをコピーしました