今日もちょいつか

お酒の飲み過ぎか、それとも歳のせいなのか毎日ちょっぴり疲れ気味なフリーのソフト屋です。ソフト開発の話題をblogにしてみます。

さくらサーバーのCodeIgniterでURLからindex.phpを除去したい

CodeIgniterを利用した場合、URLアクセス時にindex.phpを含まないといけません。
こんな感じですね。
http://localhost/hatena/index.php/hello/
localのテスト環境ならばこれでもいんですけど
実際にクライアントのサーバーではちょっとカッコ悪いです。

なので、クライアントが契約しているさくらサーバーで
index.phpの除去をしてみようと思いました。
除去は、「.htaccess」ファイルを配置することで解決できると調査済みでしたので
簡単に実現できると思ったのですが・・・。

クライアントのさくらサーバーでは他のシステムも稼働しているので
ドキュメントルートからフォルダを設定しています。
http://hatena.com/customer/index.php/hello/

除去する方法はネットにたくさん情報が転がっていますので
ちゃちゃっとコピーしてやってみます。

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

これだと「No input file specified.」とエラーになってしまいます。

ドキュメントルートではなくて、サブディレクトリなので

RewriteEngine On
RewriteRule ^(.*)$ /customer/index.php/$1 [L]

だめかー「Internal Server Error」になりました。

これで困ってしまいました。ネタ切れです。
ネットで調べてもこのような記述が多くて解決策が見つかりません。
さくらサーバーの罠なのか?
いずれ初めてすることはうまくゆきません。

かなりの数のサイトを徘徊して調べたら、ちょと違う記述に遭遇しました。
こんな感じ。

RewriteEngine on
RewriteCond $1 !^index\.php
RewriteRule ^(.*)$ /customer/index.php?/$1 [L]

これで試してみたら見事にうまくいきました。疲れたー。

すぐに実現できると思ったのに見事にハマってしまったものです。
.htaccess」ファイルは動くか動かないかのどちらかなので
ハマりやすいですね。