FuelPHPのエラーで「Not Found」が出たらmod_rewriteが有効かどうか調べる[FuelPHP入門]

これ 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

アクセスしてみよう。

http://blog.localhost/post/

アクセスできたああああああ。

そしてこのブログを書いている時にまったく同じことで悩んでた人を見つけた(fuelphpではまった点(というかmod_rewriteがenableじゃなかった…..) – nbyst's blog)。

もっと早く見つけたかった。
これから同じとこでハマる人はなんて検索かけるんだろう・・・

とりあえずキーワードをタイトルに散りばめとくから頑張って見つけて!

参考

Ubuntuで.htaccessを有効にする方法 = CodeIgniter用の設定:浜村拓夫の世界

mod_rewriteがうまく動かない時のチェックポイント

mod_rewrite

スポンサーリンク
ad
ad

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
ad

コメント

  1. ありがとうございます より:

    同じとこでハマりましたが、ググってすぐに見つかったので、あちこち悩まずにすみました!
    ありがとう御座いました!

  2. […] mod_rewriteは、Google検索で空想ブログさんの記事に行き着いて気がつきました。 […]