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によってクエリ化されたパスの値を受け取って、サニタイズを行う。
|
|