♯3 .htaccessでindex.phpを取り除く
インストールしたCodeIgniter3について、(2もですが)URLにindex.phpが入っているので、
■.htaccessで取り除く設定について。
blog/index.php/controller/action(これを)
↓
blog/controller/action(こうしたい)
■プロジェクトフォルダ直下(index.phpがある階層)の.htaccessにて
RewriteEngine on
RewriteCond $1 !^(index\.php|static|user_guide|.+\.gif$|.+\.css$|.+\.jpg$|.+\.png$|.+\.js$)
RewriteRule ^(.*)$ /blog/index.php/$1 [L]
3行目のか所でindex.phpを省略したURL
blog/controller/action
でのアクセス時にindex.phpをつけた状態のURLにrewriteします.
2行目のか所はこのパターンにマッチした際のみ、URLのrewriteを行いようにします。
これを行わないと
<link rel="stylesheet" type="text/css"
href="<?php echo base_url("static/css/main.css") ?>">
のようにCSSなどを読み込む際に
blog/index.php/static/css/main.cssにアクセスしに行ってしまいます。
■.htaccessが効かない場合
http.confの「AllowOverride」をAllに変更する。
<Directory />
AllowOverride none
Require all denied
</Directory>
XAMPPの場合はコンソールのApacheのconfigボタンから行けます。
■.htaccessが効かない場合(さくらインターネットの場合)
RewriteEngine on
RewriteCond $1 !^(index\.php|static|user_guide|.+\.gif$|.+\.css$|.+\.jpg$|.+\.png$|.+\.js$)
RewriteRule ^(.*)$ /index.php?/$1 [L]
index.phpの後に「?」が入ってます
本番環境がさくらインターネットの場合のみ必要
この記事が気に入ったらサポートをしてみませんか?