【PHP】Slimフレームワーク導入時の404エラー

実装

公式の通りにindex.phpを作成

// index.php
<?php
require_once "vendor/autoload.php";

$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});

$app->run();

ユーザーディレクトリ配下で開発していたため以下にアクセス http://apache_server.localhost/application/hello/name → 404 エラー

原因

Slim側で設定されている.htaccessファイルが DocumentRootを参照しているため

# vendor/slim/slim/.htaccess

RewriteEngine On

# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
#RewriteBase / ← これ

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

今回はApacheの設定を弄ってユーザーディレクトリでの開発をしているので Baseを変更する必要があるため、index.php と同一ディレクトリに .htaccess ファイルを作成

RewriteEngine On
RewriteBase /application/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

もう一度アクセス http://apache_server.localhost/application/hello/name

問題なく表示されれば成功