2023年5月16日火曜日

.htaccessでDocumentRootを変える方法

こんばんは、こうちゃんです。

レンタルサーバー等を使っていると、
最初からドキュメントルートのフォルダが決められてしまっていて、
ルートの位置にしたいフォルダの指定ができないところも多いかと思います。

そのような場合、事情により、アップ内容をフォルダ分けして、
例えば、web公開用のwebフォルダと、プログラムでの参照用にdataフォルダとを並列で置きたい、みたいな時に困ります。

本来のドキュメントルート下の、あるフォルダ内にファイルを配置し、
そこをドキュメントルートとして扱いたい場合、
そのレンタルサーバーなどで、.htaccessファイルの動作が許されていれば、
rewriteを使って対応可能です。
本来のドキュメントルートに、.htaccessを作成、その中身を以下のように記載します。
※仮に新ドキュメントルートにしたフォルダは web とします。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^$ web/ [L]
RewriteRule ^(.+)$ web/$1 [L]
</IfModule>

これで、フォルダ<web>内がドキュメントルートになります。
サイトを読み込む際に動作させる部分ですので、特にサーバーの再起動等も必要ありません。

最近ではフレームワークなどの都合で、ドキュメントルートが最上層じゃないケースもありまり、また、レンタルサーバーもフォルダ構成を変えられなくないので、ドキュメントルート変更をさせてくれない場合もあり、
このような方法で対応できると大変助かります。

こうちゃん