Apache2.4 VirtualHostで特定のファイルにアクセス制限

以前の記事でwp-login.phpのみにDigest認証をかける作業を行いました。

通常であれば<Files>に設定を書いておけば有効になりますが,バーチャルホストで複数のWebサイトを運営している場合は訳が違います。

理由はわかりませんが,<Directory>や<Files>が何度設定しても有効になりません。結論,<Location>を使えば良いらしいです。

<Location "/wp-login.php">
   AuthUserFile /etc/httpd/conf/.digestpass    
   AuthName "Digest Auth"    
   AuthType Digest     
   <RequireAny>      
      Require valid-user       
      Require ip xxx.xxx.xxx.xxx
   </RequireAny>
</Location>     

例えば<Location “/private”>と指定すると,URLが/privateで始まるリンクすべてに適応される。以下は例。

http://yoursite.example.com/private,
http://yoursite.example.com/private123, http://yoursite.example.com/private/dir/file.html 

ただ疑問なのは,どうしてVirtualHostで設定すると<Directory>や<Files>の設定が有効にならないのだろうか。

というかそもそも<Directory>と<Location>の違いをよく理解できていない。(そのうち掘ります)

参考にさせていただいたサイト

Configuration Sections

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です