さくらインターネットのレンタルサーバーが知らない間にApache 2.4になっていたらしく、.htaccessの書式が変わり、Movable Typeのmt.cgiに使っていた、これまでのアクセス制限ができなくなっていました。
2.4での書式はシンプルになっているので、これまでより分かりやすいのですが、何故か大ハマリ。
理由は、さくらインターネットの国外IPアドレス制限機能にありました。
さくらの国外IPアドレス制限機能は、重要なファイルへのアクセスを国外IPからアクセスできなくするセキュリティ機能。自分で設定しなくても、下のファイルは国外IPから保護されます。
Apache 2.4では、ディレクトリのファイルへのアクセスを自分のIPやホストだけ許可するには、下のどちらかだけで良いんですが、何故か、403でアクセス拒否される・・・。
Require host 自分のホスト
Require ip 自分のIP
ホストでも駄目。
IPでも駄目。
色々やってたら、この国外IPアドレス制限機能の存在を思い出した次第。
下の書式でうまくいきました。
Movable Typeのmt.cgiへのアクセスを自分のホストまたはIPのみ許可、.htaccessとhtpasswdファイルへのアクセスを拒否する設定
<Files "mt.cgi"> Require host 自分のホスト </Files> <Files ~ "^\.(htaccess|htpasswd)$"> Require all denied </Files>