LoginSignup
85
93

More than 5 years have passed since last update.

.htaccess(Apache) の Order Allow,Deny(またはDeny,Allow)について

Last updated at Posted at 2017-04-07
  1. .htaccess の書き方(リダイレクト編)
  2. .htaccess の書き方(アクセス制御編)
  3. .htaccess(Apache) の Order Allow,Deny(またはDeny,Allow)について
  4. .htaccess の書き方(スピードアップ編)
  5. .htaccess の書き方(設定変更編)

.htaccess や Apache の http.conf 等で記述する Order Allow,Deny(またはDeny,Allow) について

Order は後に記述された方がデフォルトになる

SQLのorderと違って後方が優先されます。
Order Allow,Deny ならデフォルトはDeny(拒否)
Order Deny,Allow ならデフォルトはAllow(許可)

Order しか書かれていなければデフォルトが有効になります。
以下の場合は全てのアクセスが拒否になります。

Order Allow,Deny

デフォルト拒否なので
これに Deny をいくら加えても結果は同じ。

Order Allow,Deny
Deny from XXX.XXX.XXX.1
Deny from XXX.XXX.XXX.2
Order Allow,Deny
Deny from all

これに Allow を加えれば
「デフォルト拒否だけど○○は許可」となります。
以下は特定IPアドレスからのアクセスだけ許可。

Order Allow,Deny
Allow from XXX.XXX.XXX.1
Allow from XXX.XXX.XXX.2

Allow と Deny を入れ替えれば
「デフォルト許可だけど○○は拒否」となります。
以下は特定IPアドレスからのアクセスだけ拒否。

Order Deny,Allow
Deny from XXX.XXX.XXX.1
Deny from XXX.XXX.XXX.2

デフォルト拒否のところに Allow from all を加えると、
「デフォルト拒否だけど全て許可」となるので
結果「全て許可」になります。

Order Allow,Deny
Allow from all

さて、ここで問題。
ここに Deny from all を追加するとどうなるでしょう。

Order Allow,Deny
Allow from all
Deny from all

答えは後方が優先されるので「全て拒否」になります。
書く順番を変えても結果は同じ。

Order Allow,Deny
Deny from all
Allow from all

Order を後に書いても結果は同じ。

Deny from all
Allow from all
Order Allow,Deny

ただ、この書き方だと混乱を招くので、みんな Order を先に書く習慣になっているんですね。

全拒否の記述例

以下は全て全拒否になります。

# Order でデフォルト拒否
Order Allow,Deny
# Deny で全て拒否
Deny from all
Order Allow,Deny
Deny from all
# デフォルト許可だけど Deny で全て拒否
Order Deny,Allow
Deny from all
# 後方が優先され全て拒否
Order Allow,Deny
Allow from all
Deny from all

全許可の記述例

以下は全て全許可になります。

# 何も書いてなければ何もおきない
# Order でデフォルト許可
Order Deny,Allow
# Allow で全て許可
Allow from all
Order Deny,Allow
Allow from all
# デフォルト拒否だけど Allow で全て許可
Order Allow,Deny
Allow from all
# 後方が優先され全て許可
Order Deny,Allow
Deny from all
Allow from all

一部許可の記述例

以下はデフォルト拒否だけど一部で許可

Order Allow,Deny
Allow from XXX.XXX.XXX.1
Allow from XXX.XXX.XXX.2
Order Allow,Deny
Allow from XXX.XXX.XXX.1
Allow from XXX.XXX.XXX.2
Deny from all

一部拒否の記述例

以下はデフォルト許可だけど一部で拒否

Order Deny,Allow
Deny from XXX.XXX.XXX.1
Deny from XXX.XXX.XXX.2
Order Deny,Allow
Deny from XXX.XXX.XXX.1
Deny from XXX.XXX.XXX.2
Allow from all
85
93
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
85
93