CodeIgniterは環境によって「No input file specified.」エラーが発生するのでその対処




原因はよくわかっていないのですが、CodeIgniterを利用していると、環境によって「No input file specified.」というエラーが発生します。
この解決方法の一例を紹介します。

発生する条件

URLからindex.phpを取り除く設定をする場合に発生するときがあります。
が、まだ詳しく調べていないので詳細な条件まではわかっていません。
私の場合、.htaccessにindex.phpを取り除く設定を追加し、ローカルのDocker環境では特に問題なく動作したのですが、さくらインターネットの共用サーバーで動作確認しようとしたら「No input file specified.」エラーが発生しました。

解決方法

ローカル環境と全く同じなので良くわからなかったのですが、結局

RewriteRule ^(shop_register)(.*)$ index.php/$1 [L]

のindex.php/$1を以下のようにindex.php?/$と?を追加したら動作するようになりました。

RewriteRule ^(shop_register)(.*)$ index.php?/$1 [L]

なんかおまじないのようですが、これですべてが解決しました。
現象がわからないので時間があるときに調査したいと思います。