- .htaccess の書き方(リダイレクト編)
- .htaccess の書き方(アクセス制御編)
- .htaccess(Apache) の Order Allow,Deny(またはDeny,Allow)について
- .htaccess の書き方(スピードアップ編)
- .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