CodeIginter3で開発したWebアプリがInternal Server Errorで動かなかった原因

VirtualBoxに構築したLAMPサーバーでCodeIgniter3を使って開発してたんだけど、Raspberry Pi 3で動かしているLAMPサーバに試しにアップロードしてみたら、どうしてもInternal Server Errorで動かなかった。パスの違いやデータベースのエラーかと思ってPHPのエラー表示をONにしたりしてみたけど、何も表示されないしログにも出てなかった。ものは試しにと.htaccessを一旦リネームしてみるとphpinfoは表示されたので、どうもそれが怪しいと思いながらも色々とログを漁っているとApacheのログで下のようなエラーが出ていた。
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
RewriteEngineミススペルとな。そんなわけないだろうと検索してみると、どうやらApacheのRewriteEngineのモジュールが有効になってないらしい。確かに、mods-availableディレクトリにはなかったので、有効にしたら無事動作するようになった。以下は、RASPBIAN JESSIE LITEでの設定例。1行目のCDコマンドは特に必要ない。モジュールが有効になってたら、ここにシンボリックリンクがあるはずなので、単にそれの確認だけ。
$ cd /etc/apache2/mods-available/
$ sudo a2enmod rewrite
$ sudo service apache2 restart
ちなみにエラーの出てた.htaccessはこんな内容。CodeIgniter使う時のお馴染みのindex.phpを省略する内容のもの。拡張子いっぱいなのはBootstrap対応。この指定がないとglyphiconが表示されない。
RewriteEngine on
RewriteCond $1 !^(index\.php|css|woff|eot|ttf|svg|css|js|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    この記事で書かれている製品やソフトについて
  • Raspberry Pi 3 Model B
  • RASPBIAN JESSIE LITE(September 2016)
  • Apache 2.4.10 (Raspbian)