.htaccessファイルを利用して「特定のファイルだけ許可」もしくは「特定のファイルだけ拒否」する方法メモ。
例えば設定項目のファイルやログを取っているファイルなど、外部に公開されては困るファイルに利用できますね。
他には全体を非公開のディレクトリでも一部の特定ファイルのみを許可することがでくたりと、柔軟な設定が可能です。
.htaccessの記述方法
特定のファイルと同じ階層に.htaccessファイルを置いた場合で、アクセス許可とアクセス拒否の方法を見ていきましょう。
特定ファイルのアクセス許可
<Files ~ "^(robots\.txt|google\.html)$">
allow from all
</Files>
この場合は「robot.txt」もしくは「google.html」というファイルはアクセスを許可します。
正規表現を使う事や複数ファイルの指定などもできます。
「allow from all」で「全てのアクセスを許可」という指定ですね。
特定ファイルのアクセス拒否
<Files ~ "^(admin\.txt|log\.dat)$">
deny from all
</Files>
この場合は「admin.txt」もしくは「log.dat」というファイルはアクセスを拒否します。
「deny from all」で「全てのアクセスを拒否」という指定になります。
利用した正規表現について
~ パターンマッチ
^ 開始位置指定
$ 終了位置指定
\ 「.」を文字列と認識させる為のエスケープ
まとめ
注意したいのは「.htaccess」は下位階層への適応なのでそれぞれのディレクトリ内に指定してしまうと、どういった動きになるのかが直感的にわかりにくくなってしまいます。
全体を非公開にしたつもりでも下位ディレクトリにアクセス許可の.htaccessがあった場合にはそれが優先されてしまうといったケースです。
今日も知識欲は止まらない。