.htaccessで特定ファイルのみ許可・拒否する方法


.htaccessファイルを利用して「特定のファイルだけ許可」もしくは「特定のファイルだけ拒否」する方法メモ。
例えば設定項目のファイルやログを取っているファイルなど、外部に公開されては困るファイルに利用できますね。
他には全体を非公開のディレクトリでも一部の特定ファイルのみを許可することがでくたりと、柔軟な設定が可能です。

SPONSORED LINK

.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があった場合にはそれが優先されてしまうといったケースです。

今日も知識欲は止まらない。

関連トピック

海外サーバでの時差(タイムゾーン)を変更する方法

海外サーバのサーバ時間を変更する方法です。 タイムゾーンを設定をすることで日本時間に合わせることが可能なので、時間を表示するサイト

DreamHost Promo Code(プロモコード)最大割引クーポン&使い方まとめ

世界で一番安くなるプロモコードを作ってほしいとご依頼して頂きましたので、新規で割引最大のプロモコードをご用意しておきます。色々なサー

.htaccessでMultiViewsから.phpの拡張子省略をする方法

拡張子を省略したり、拡張子なしでファイルにアクセスする方法メモです。 URLから拡張子を省けるので場合によってはSEO的に有利になるこ

.htaccessでスマホをタブレット以外で振り分ける

.htaccessを使用してタブレット以外のスマホを振り分ける方法メモです。 タブレット端末は基本的にパソコン向けのページを表示させる

.htaccessでRewriteRuleを表示URLそのまま変えずに転送する

htaccessで動的URLなどを別のURLに書き換える場合に、アクセスしたURLをそのままにして表示だけを切り替える方法メモです。

さくらサーバーのMySQLをcronで自動バックアップする方法

さくらレンタルサーバーでmysqlのデータを自動でバックアップする為のcron設定方法メモです。 サーバー上ファイルのバックアップは常

公開日:2010/03/05