これ FuelPHP でURL指定してアクセスしたら「Not Found」[FuelPHP入門] 解決した!
くだらないことだったけど、嬉しい。
原因は mod_rewrite が有効になってなかったこと。
今振り返ると、「Not Found」の表示が、FuelPHPのエラー画面の「404 Not Found」ではなかった。
この時点で、Apacheの問題だと気づくべきだったんだろう。
はじめは FuelPHP自体を疑ってたけど見当違いだった(FuelPHP1.7をUbuntu12.10にsudoを使わずインストール)。
1.mod_rewrite とは
mod_rewrite は Apache のモジュールの一つで、主に使う機能は以下2つ。
・動的URL(?id=) を 静的な URL へ正規表現で書き換える
・アクセスされた URL とは別の URL へリダイレクト
コンテンツとして価値のある動的ページを検索エンジンにクロールさせたいときや、サイトを引っ越してURLが変わった時などに効果を発揮する。
FuelPHP では URL のリダイレクト機能を主に使う。
mod_rewrite は .htaccess に記述する。
.htaccess は FuelPHP を oil でインストールすると自動で作成される。
.htaccess が 有効になっているかは、Apache の設定ファイルから確認する。
sudo vim /etc/apache2/apache2.conf
以下の記述があればOK(コメントアウトされてたら「#」を削除)。
AccessFileName .htaccess
2.FuelPHP での mod_rewrite
なんでmod_rewrite と当たりをつけたんだっけ・・・忘れたな・・・
「Not Found」を見て リダイレクト処理がちゃんとしてないと考えたからかな・・・
mod_rewrite が有効がどうか確認する。
rewrite.load があるかどうか確認。
ls /etc/apache2/mods-enabled/
ない!
mod_rewrite が入ってない。
よし mod_rewrite を入れよう!
sudo a2enmod rewrite
ちゃんと入ったか確認。
ls /etc/apache2/mods-enabled/
モジュールが読み込まれているか確認。
sudo vim /etc/apache2/apache2.conf
以下の記述があればモジュールは読み込まれている。
Include mods-enabled/*.load
そして再起動。
sudo /etc/init.d/apache2 restart
アクセスしてみよう。
アクセスできたああああああ。
そしてこのブログを書いている時にまったく同じことで悩んでた人を見つけた(fuelphpではまった点(というかmod_rewriteがenableじゃなかった…..) – nbyst's blog)。
もっと早く見つけたかった。
これから同じとこでハマる人はなんて検索かけるんだろう・・・
とりあえずキーワードをタイトルに散りばめとくから頑張って見つけて!
コメント
同じとこでハマりましたが、ググってすぐに見つかったので、あちこち悩まずにすみました!
ありがとう御座いました!
[…] mod_rewriteは、Google検索で空想ブログさんの記事に行き着いて気がつきました。 […]