CodeIgniterのURLでindex.phpを省略する方法

Web技術
スポンサーリンク

CodeIgniterのURLのindex.phpを省略したい

どうやって設定するの?

わかりやすく教えてほしい

こういった疑問にこたえます。

この記事を読めば
  • CodeIgniterのURLで index.phpを省略する方法がわかる
  • 省略するためのhttpd.confの設定がわかる
  • 省略するための.htaccessの書き方がわかる

CodeIgniterのURLでindex.phpを省略する方法

CodeIgniterのデフォルトではhttp://example.com/index.php/controller/actionのようにコントローラーの前にindex.phpが入る形になります。

これをhttp://example.com/controller/actionのように省略した形でアクセスできるように設定を変更していきます。

index.phpを省略する3ステップ
  • apacheのhttpd.confを編集
  • .htaccessファイルの作成
  • CodeIgniterのconfig.phpの編集

httpd.confの設定

まずはapacheの設定から。

※編集前にバックアップを取ることをおすすめします。

httpd.confの内容を書き換えます。

rewrite_moduleがコメントアウトされている場合は解除してください。

また、AllowOverrideの設定がNoneになっている場合はAllに変更します。

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#↓
LoadModule rewrite_module libexec/apache2/mod_rewrite.so


#   
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#

#AllowOverride None                                                                                                                                                                                                                                                           
#↓
AllowOverride All

この設定をすることで、CodeIgniterのディレクトリに配置した.htaccessが機能するようになります。

.htaccessの作成

.htaccessでURLをリライトする準備を終えたら、.htaccessファイルを作成し配置していきます。

.htaccessファイルの内容は以下の通り。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

これをCodeIgniterのapplicationフォルダと同階層に配置します。

CodeIgniterのconfig.phpの編集

最後にCodeIgniterのapplication/config/config.phpファイルを編集していきます。

この設定をしないとsite_url()を使用するとindex.phpが付与されてしまいます。

$config['base_url'] = 'index.php';
↓
$config['base_url'] = '';

CodeIgniterのURLでindex.phpを省略する方法まとめ

解説の内容をまとめます。

index.phpを省略する3ステップ
  • apacheのhttpd.confを編集
  • .htaccessファイルの作成
  • CodeIgniterのconfig.phpの編集

CodeIgniterを使う人の参考になれば幸いです。

お疲れ様でした。

コメント

タイトルとURLをコピーしました