さくらサーバーの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」ファイルは動くか動かないかのどちらかなので
ハマりやすいですね。