サーバーのことがわからないと多分ハマるステップ
初歩のしょ
MVCをおさらいしつつ、ベーシカルなページを作って表示しようとして参考にしたのはこちら:
軽量PHPフレームワーク 'CodeIgniter' 徹底ガイド!
CodeIgniter ユーザガイド 日本語版 Version 2.0.3
####ルーティングとmod_rewrite
ルーティング=パスやクエリ文字列によって、処理されるクラスやアクションメソッドが決定される
ttp://localhost/ドメイン/index.php/login/index/Taro/Jiro
login=controller,class
index=action,method
Taro,Jiro=methodのparamater1,2
index.phpはない方が見た目的にもSEO的にも美しい
ttp://localhost/ドメイン/index.php/login/index/Taro/Jiroとするには
=>mod_rewriteの出番
- .htaccessを有効化
.htaccessを有効にする
XAMPPのApacheのconfigボタンより、httpd.confを選択して上記リンクを参考に編集
- .htaccessの編集
サンプル
RewriteEngine on RewriteCond $1 !^(index\.php|images|js|css|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /index.php/$1 [L]
.htaccessの影響する範囲について知識がなかったために、結構ハマったポイント。
サンプルはC:\xampp\htdocsにindex.phpがある構成
自分のものはC:\xampp\htdocs\ドメインにindex.phpがある構成
なので、ドメインのところにあるindex.phpと同階層の.htaccessに対して、修正
RewriteEngine on RewriteCond $1 !^(index\.php|images|js|css|robots\.txt|favicon\.ico) RewriteRule ^(.*)$ /ドメイン/index.php/$1 [L]
このRewriteCondの中にある拡張子のラインナップに、使用しているファイルのものが含まれていないと表示するときにエラーになるので要注意。
例でいえばjs、cssはサンプルではJavaScript、StyleSheetでした。作ったjsやcssファイルをjs・cssフォルダへ格納して、あれ表示されないぞ?なんてことになっていました。
- config.phpの編集
$config['base_url'] = ''
→$config['base_url'] = 'http://localhost/ドメイン/';
$config['index_page'] = 'index.php';
→$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
→$config['uri_protocol'] = 'PATH_INFO';
index_pageの設定を見落としていて、mod_rewriteで消していたindex.phpが画面遷移後に付加され直されてしまい、気持ち悪い思いをしました
以上の設定を行い、MVCに沿ったサンプルを作ってページを表示ができました。
なおここまでの設定は個々の環境によって違うので、必須ではありません。
のちのちつまづいたら見る用に、ピックアップしてみました。