軽量な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で作る・作り直すというケースがありそうかなと思って調べてみました。