CodeIgniterのURLのindex.phpを省略したい
どうやって設定するの?
わかりやすく教えてほしい
こういった疑問にこたえます。
CodeIgniterのURLでindex.phpを省略する方法
CodeIgniterのデフォルトではhttp://example.com/index.php/controller/action
のようにコントローラーの前にindex.phpが入る形になります。
これをhttp://example.com/controller/action
のように省略した形でアクセスできるように設定を変更していきます。
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を省略する方法まとめ
解説の内容をまとめます。
CodeIgniterを使う人の参考になれば幸いです。
お疲れ様でした。
コメント