Apacheでhtaccessが効かない対処法【有効化手順】

現在AWSでとあるサービスを作ってます。

※ AWS = Amazon Web Service

そこで次の事件がありました。

  • EC2にインスタンスを作る
  • そこにApacheをインストール
  • 普通に.htaccessを設置する
  • アレ?なんで効かないの?

こういう感じですね。

そこで自分自身の記憶の整理も兼ね、
Apacheでhtaccessが効かない時の対処法 を紹介

対処法というか有効化手順の方が正しいかも

もちろんAWS以外でも有効なやり方です。

0.htaccessが効かない経緯について

Apacheのインストールは上手くいきました。

実際にテストページの表示も成功します。

そしてhtaccessもアップロードできたんです。

▼ 中身はこういう内容だった

単にwwwなしに統一するだけのディレクティブです。

ところが.htaccesが全く機能していません。

普通にwwwありなし両方でアクセスできてしまう・・

原因はApache側で有効化してなかったからです。

1.httpd.confにて.htaccessを許可する

まずhttpd.confを開きます。

▼ ターミナルからvimで開く

そしたらこういう記述を見つけてください。

▼ /var/www/html領域の設定

※ 環境によって少し違うので注意

この AllowOverride None  が問題なんです。

これを次のように書き変えしてみてください。

▼ このように記述を変えてみた

単に AllowOverride ALL  とするだけ

 

ちなみに AllowOverride ですが・・・

▼ このディレクティブの公式解説

このディレクティブを None に設定すると、.htaccess ファイルは完全に 無視されます。 この場合、サーバはファイルシステムの .htaccess ファイルを読むことを 試みさえしません。このディレクティブが All に設定されている時には、 .htaccess という コンテキスト を持つ 全てのディレクティブが利用できます。

引用元 : https://httpd.apache.org/docs/2.2/ja/mod/core.html#AllowOverride

ココに書かれているように None になっていると.htaccess自体が全く効かないようです。だから AllowOverride ALL  とする必要があったわけですね。(納得)

2.Apacheサーバーを再起動させる

最後の仕上げとして再起動

▼ このようなコマンドを実行

これで無事.htaccessが効くようになりました!

Apacheを手動インストールするなら要注意です。

まとめ - htaccess有効化は少し面倒かも

まあレンタルサーバーなら遭遇しない問題です。

ただ自分で自宅サーバーを立てたり、あるいはAWSでサイト・サービスを作るなら、「あれ?なんで.htaccessが効いてくれないの?」と困ってしまうかもしれません。

その時はここまでの手順を試してみてください。

以上、htaccessが効かない時の対処法でした。(^^)/~~~