CodeIgniter3でURIの変更

By | 2017/04/22

一般的な形は以下のような形を取る。
サイトURL/index.php/class/function/引数…
でも必ずしもこの形にしたいわけではないのでルーティングという仕組みがある。

変更の仕方

application/config/routes.phpを変更する
$route[入ってきたURI]=変更されたURI;

「入ってきたURI」は正規表現であらわす。
正規表現を括弧で囲むことで後方参照が可能。
後方参照された部分は$1とか$2などとして「変更されたURI」で使うことができる。
例)
$route[‘product/([a-z]+)/[0-9]+’] = ‘$1/page_$2’;

予約語もある

$route[‘default_controller’] = URIになにもデータがない場合のアクション。
$route[‘404_override’] = 該当するコントローラがない場合のアクション。show_404()とは違う。
$route[‘translate_uri_dashes’] = [-]をアンダースコアにするかどうかの真偽値。クラス名やメソッド名に-は付けられないので強制的に変更するかどうか。

index.phpを消したい

特に意味もなく付けるのは嫌だから消したかったから消した。
やり方は.htaccessを以下のように記述してルートディレクトリに設置する。
RewriteEngine on
RewriteCond $1 !^(index\.php|images)
RewriteRule ^(.*)$ /index.php/$1 [L]

上の意味
index\.phpやimagesの入ったURLを除いて、来たURLの頭にindex.phpが付いたURLに書き換える。

参考
URI ルーティング
CodeIgniterでURLからindex.phpを除去する

 


コメントを残す

メールアドレスが公開されることはありません。