軽量なPHPフレームワークで有名なSlim4を、ルートディレクトリより下のディレクトリで走らせる方法です。このページを元に書いてます。つまり雑な英訳≒要約です。
次のようにApacheサーバーが動いているとします。
- Rootディレクトリが
/var/www/public/ - URLが
https://example.com/
こんなウェブサイトがあったときに、
- Slim4を
/var/www/public/test/ディレクトリに展開して、 -
https://example.com/test/としてアクセスしたい。
そんな状況です。
Apacheの設定
/var/www/public/test/.htaccessを作成します。
# Rewrite URL
RewriteEngine on
# redirect to /index.php
RewriteBase /test
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA]
ポイントはRewriteBase /testを追加すること。
それとRewriteRuleのファイル名をindex.phpとすること(最初にスラッシュを書かない)。
かな。
Slim4の設定
次に、/var/www/public/test/index.phpで、Slim4を動かします。
ここでアプリに、サブディレクトリで走っていることを教えてあげます。
$app = AppFactory::create();
$app->setBasePath('/test'); // ←この一行を追加!
$app->setBasePath()関数でサブディレクトリ名を指定します。
これで、/testを書かずにルート設定などが可能になります。
自動でBasePathを取得する方法
ベースパスを自動で取得する方法が参考ページにありましたので、興味ある方はそちらを御覧ください。
最後に
ウェブサイトの一部だけをSlim4で作る・作り直すというケースがありそうかなと思って調べてみました。