♯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の後に「?」が入ってます
本番環境がさくらインターネットの場合のみ必要

この記事が気に入ったらサポートをしてみませんか?