独自のフレームワークの作成に取り組んでおり、大学で学んだよりも高度なプログラミング手法を学ぶことに重点を置いています。.htaccess
すべてのページ要求を、要求 URI に基づいてコントローラーとテーマをロードするブートストラップ ファイルにリダイレクトするために使用します。
URL の形式は次のとおりです。site.com/Controller[/optional/multiple/params]
問題は、たとえば、画像または css ファイルを含めようとしているのに、それが存在しないことです。firebug では、リダイレクトのために 404 エラーとして表示されません。
.htacess ファイル
Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
# Redirect to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
URI を確認して解析すると、404 コントローラーに転送され、要求された URI の 404 ヘッダーが生成されます。ただし、CSS や画像などの埋め込みファイルの場合、要求されたページと同じ応答が表示され、404 エラーは生成されません。
IE で index.php にアクセスすると、index.php は正常に読み込まれますが、すべての無効な css ファイルには index.php と同じヘッダー応答が返されます。
以下は、URI が解析された後にコントローラーをロードするコードです。
//locate
$file = 'Lume/' . self::$AppPath . 'Controller/' . self::$ControllerName;
if(!file_exists($file . '.php')){
header('HTTP/1.0 404 Not Found');
$file='Lume/' . self::$AppPath . 'Controller/_404.php';
}
//create
$controller = str_replace('/', '\\', '/' . $file);
if(!is_subclass_of($controller, '\Lume\Abstracts\Controller'))
throw new \Exception('Route::Main The controller must extend from Lume\Abstracts\Controller');
self::$Controller =& new $controller();