小金井にあるWEB制作会社の備忘録

MEMORANDUM

全てのアクセスを一カ所に集約するフロントコントローラー

MVCと呼ばれる各種フレームワークで、良く利用されるのが「フロントコントローラー」という構成。
全てのアクセスを一カ所(index.php)で受けとり処理しようというもの。
どんなURLにアクセスしてもindex.phpを実行するので、追加ファイルなどの対応も容易にできる。

htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
http://choilog.com/katty0324/blog/6

コードの内容は下記のサイトを参照

PHP(index.php)

$parse_url = parse_url($_SERVER['REQUEST_URI']);
if(preg_match('/.php/', $parse_url['path'])){
	$params = explode('/', $parse_url['path']);
	$value = end($params);
	$path = preg_replace('('.$value.')', '', $parse_url['path']);
	$filename = preg_replace('(.php)', '', $value);
	$filename = preg_replace('(-)', '', $filename);
	$filename = ucfirst(strtolower($filename));
	$filename = $filename.'Controller.php';
}else{
	$path = $parse_url['path'];
	$filename = 'IndexController.php';
}
include('./controllers/user/'.$path.$filename);

上記例は
https://sample.com/blog/ にアクセスした場合に https://sample.com/controllers/user/blog/IndexController.php を
https://sample.com/blog/detail.php にアクセスした場合は https://sample.com/controllers/user/blog/DetailController.php を読み込みます。