2014年10月9日木曜日

Apacheをyum updateしたら.htaccessが効かなくなった

概要

自分の開発用のサーバをyum -y updateしたら対象にhttpdパッケージが入っいて、開発だから問題ないと思ってアップデートしたら、いつもBasic認証がかかるページに認証がかからなくなっていたので対処しました
結構焦りました

環境

  • CentOS 5.10 (Final)
  • Apache 2.2.3

各種設定内容

以下の設定として話を進めていきます
2.2.3のデフォルトで何もしていなければ以下の構成になっているかと思います
モジュール関連は今回関係ないですが、基本的なことなのでついでに記載しておきます

  • DocumentRoot
    /var/www/html
  • 設定ファイル配置パス
    /etc/httpd/sites-available
    /etc/httpd/sites-enabled
  • モジュール配置パス
    /etc/httpd/mods-available
    /etc/httpd/mods-enabled
  • モジュールパス
    /usr/lib64/httpd/modules/mod_rewrite.so

設定方法

.htaccess自体はディレクトリごとに設定を変えたいときに使う機能です
Apacheのルール設定は階層な構造的になっていて

システム全体の設定 -> VirtualHostごとの設定 -> ディレクトリパスごとの設定 -> ディレクトリごとの設定

みたいな感じで必要に応じて細かく設定することができるようになっています

で、その階層的な設定の可否を制御しているのがAllowOverrideディレクティブというやつで、こいつの設定次第で細かく設定できるかできないか決まってきます

今回の原因としてはこいつが細かく設定できないモードになっていてディレクトリごとに設定できるはずの.htaccessが使えない状態になっていました

修正した箇所は以下の通り

vim /etc/httpd/sites-enabled/000-default

#AllowOverride None

AllowOverride All

Noneになっているとどうやら細かい設定できないモード(というかここで設定した項目を上書いて変更することはできないモード)になっていたので.htaccessがうまく動いていませんでした
書き換えたあとはservice httpd restartとかでApacheを再起動してください

まぁ要するに大丈夫だろと思ってyum updateしたら設定ファイルまで書き換わってしまって大変なことになったということです

0 件のコメント:

コメントを投稿