LoginSignup
0
0

ApacheでFilesやFilesMatchが反映されない問題とその原因

Last updated at Posted at 2020-02-27

Apacheのconfにはデフォルトで次のような記述があり、通常は.htaccessなどが見えてしまうことはありませんが、設定によっては.htaccessファイルが丸見えになってしまう(FilesやFilesMatchの設定が無視される)場合があります。

<Files ".ht*">
    Require all denied
</Files>

例えば、次のような設定が行われていると、FilesやFilesMatchの設定が評価されず、.htaccessが見えてしまう原因となります。

<Location "/">
        <RequireAll>
                Require all granted
                Require not ip 192.168.0.0/24
                Require not ip 192.168.1.0/24
                Require not ip 192.168.2.0/24
        </RequireAll>
<DirectoryMatch>

原因

ディレクティブには優先順があります。

<Directory>  <   <Files>   <   <Location>

上記のように種類の異なるセクションが混在し、かつセクション同士で一部あるいは全部の条件が重複する場合は、優先度の高いセクションの内容が評価されます。つまり、<Files>よりも<Location "/"> の優先度が高いため、<Files>が評価されない問題が発生します。
そして、設定は記述順(上から順)に評価されるとは限らず、<Files><Location>の前に持ってこようが、後ろに持ってこようが結果は変わりません。

対応

Locationを使わず、DirectoryやDirectoryMatchを使います。
Locationはトラブルになりやすいため、なるべくLocationを使用しない運用とすることが望ましいといえます。

<Directory "/var/www/html">
        <RequireAll>
                Require all granted
                Require not ip 192.168.0.0/24
                Require not ip 192.168.1.0/24
                Require not ip 192.168.2.0/24
        </RequireAll>
<Directory>

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0