MVCモデルに置いて表示の出し分けは、アクセスのあったURLの文字列を参照する。 URLに処理ファイルが配置されているわけではなく、パスはあくまで文字列の取得元である。

public/controller/method/var1/var2/var3

上記にアクセスがあった場合、Apacheは該当のディレクトリを探しに行ってしまう。 もちろんそこにファイルはないため、404Errorとなる。 それを防ぐために、.htaccessを使用しファイル探索を行わさせず(Rewrite処理)、 URL文字列を取得するに留まらせる。

mod_rewrite - Apache HTTP Server Version 2.4

Options -MultiViews
Options -Indexes

RewriteEngine On
RewriteBase /mvc_php/public
 # ホストに合わせて調整

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

.htaccessによってクエリ化されたパスの値を受け取って、サニタイズを行う。

if(isset($_GET['url']) {
    return explode('/', filter_var(rtrim($_GET['url'], '/')), FILTER_SANITIZE_URL)
}