.htaccess

CodeIgniterのURIが今までずっと

http://codeigniter.dev/index.php/board/

こんな感じで index.php が挟まってた状態でどげんきゃせんといかん、
とずっと考えてて今に至る。
ユーザーガイドに .htaccess を使う的な事が書いてあって今回チャレンジ

.htaccess ってなんぞ

参照:Apache チュートリアル: .htaccess ファイル - Apache HTTP サーバ

  • ディレクトリ毎に設定を変更できる分散設定ファイル
  • httpd.conf で一括設定した方が、お行儀が良さそう
  • レンタルサーバなど、サーバ設定が出来ないときに使うのが本来のスタイル

さらに、Apache は適用すべきディレクティブを集めるために、すべての 上位のディレクトリの .htaccess ファイルを探す必要があることにも 注意してください。

さらにベーシック認証とか、他色々設定が出来るらしい。
.htaccess ... 最近貴方が大きな壁です。

とりあえず今回は、.htaccess を使ってURL設定

作業内容

びふぉあ

http://codeigniter.dev/codeigniter/index.php/shop/

あふた

http://codeigniter.dev/codeigniter/shop/
  • index.phpURI から取り除く

ディレクトリ構成

codeigniter/
├── application
├── index.php
├── system
├── .htaccess # ここに追加

.htaccess の設定

RewriteEngine On
RewriteCond $1 !^index\.php
RewriteRule ^(.*)$ /codeigniter/index\.php/$1 [L]
RewriteEngine
mod_rewrite を有効にする
RewriteCond
この条件が通ったときだけ次のディレクティブを実行
index.phpを除外する
RewriteRule
^(.*)$ : 正規表現。意味合い的には最初から最後まで何か文字入ってますよ。的な意味だと思う...多分。
/codeigniter/index\.php/$1 [L] : index.php を除いて、すべて
/codeigniter/index.php/ 追加。

http://codeigniter.dev/codeigniter/board            # この場合
http://codeigniter.dev/codeigniter/index.php/board  # このURIのデータをブラウザで表示

※ブラウザのURIは /codeigniter/board のまま

こんな感じの認識であってるはず。。。多分。
ドハマリして、いまいち理解が追付いてないと思われて不安なのぜ

CentOSapache の設定

/etc/httpd/conf/httpd.conf
ドハマリしてて色々いじってて何が正解か分かってない感じだけど、一応メモ

  • ドキュメントルートの設定箇所
DocumentRoot "/var/www/vhosts/webapp"
  • .htaccess の有効無効設定 (ALL | None)
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

間違ってること多数の可能性大なので、あまり参考にならないかも