dポイントプレゼントキャンペーン実施中!

アクセス拒否の設定で以下の様に設定するかと思うのですが、
意味についていまいちわからないので教えてください。

order allow,deny
allow from all
deny from 111.222.333.444
deny from example.com

↑この場合、まずorder allow,denyの記述で許可か拒否かその都度判断するよ!との解釈でよいのでしょうか?

次の定義の意味が良くわかりません。
allow from all ですが、これは全てを許可するという意味ではないのでしょうか?
なぜここでそのような宣言が必要なのでしょうか?
1つ前に、許可か拒否はその都度判断するよとの宣言をしているので、allow from all は書かなくてもよさそうに思うのですが…。

あとは、deny from 111.222.333.444 といった感じで、
deny  が来るので、その都度の判断でアクセス拒否の判断になるのだと思うのですが…。

ちなみに、
deny from 111.222.333.444のあとに、allow from 333.4.555.666を記載すると、これはアクセス許可するという判断になるのでしょうか?
何も記載しなければアクセスは許可になるのでしょうか??

何だか混乱してきました、何かしらない優先順位とかがあるのでしょうか?

お詳しい方、上記にあげたそれぞれの意味を教えて頂けないでしょうか?
宜しくお願いいたします。

A 回答 (4件)

ここ(公式サイト)に詳細が書いてあります。


https://httpd.apache.org/docs/2.2/ja/mod/mod_aut …

「order」の「allow,deny」というのが、見た目制御パラメータの羅列のように見えますが一つの設定値です。こう書くと、「deny fromで指定したもの」と「allow fromで指定したもの以外」がdenyと同じ効果を持つようになります。

ここで「allow from all」と先に書いてしまうと、それ以降は「deny from」で書いたもの以外はすべて許可になります。
    • good
    • 0

現在主流のサーバーのApache2.4からは、下記のように変更されてます、この記述では動作しないと思います。


<RequireAll>
Require all granted
Require not host line-apps.com
Require not host ahrefs.com
Require not ip 112.135.12.54
</RequireAll>
    • good
    • 0

> デフォルト拒否を指定した後に、わざわざ全部許可を再度定義するのは無駄な様に思うのですが…。



はい。その通り、長くなる記述方法です。
何故そんな書き方をするのかは書いた人に聞くしか無いです。まあ、99%の人は「自分で考えずに真似しただけ」で、最初の数人しか自分で考えてないと思いますけど。

> 最初のorder allow,denyを指定せずに

order deny,allowもorder allow,denyもどちらも書かない場合は、order deny,allowの方がデフォルトなので、私が
> 同じ効果を1行少なく書くと、
と書いた部分に、order deny,allowがありますが、さらに削るならこれも不要ですね。
つまり、「denyと書いた物以外全部許可」であれば、deny ~~ だけ並べれば十分です。
    • good
    • 0
この回答へのお礼

何度も有難うございます。

>>つまり、「denyと書いた物以外全部許可」であれば、deny ~~ だけ並べれば十分です。
こちらが最も簡潔に書ける方法そうですね、結構不要な記述が多々残ったまま記載されているものが多いのですね。
大変勉強になりました、有難うございました!mm

お礼日時:2021/04/14 18:23

> まずorder allow,denyの記述で許可か拒否かその都度判断するよ!との解釈でよいのでしょうか?



違います。order allow,denyの意味をちゃんと調べましょう。
これを書くと、デフォルトが拒否になります。
その上で、allowに合致する物が許可され、許可された中でさらにdenyに合致する物が拒否となります。

> なぜここでそのような宣言が必要なのでしょうか?

allow from all を書かないと、デフォルトのまま全部拒否です。

allow from all を書いたので、全部許可となり、そのなかでdenyに合致する 111.222.333.444 と example.com が拒否になります。

> deny from 111.222.333.444のあとに、allow from 333.4.555.666を記載すると、これはアクセス許可するという判断になるのでしょうか?

書く順番は関係ないです。すべてのallowが処理されてから、denyが処理されます。

> 何も記載しなければアクセスは許可になるのでしょうか??

書いたとおり、allowに合致しない物はデフォルトで拒否です。

他の例:
order allow,deny
allow from 192.168.0
deny from 192.168.0.10
だと、192.168.0.xxx 以外と 192.168.0.10 からは拒否で、
192.168.0.10 以外の 192.168.0.xxx からは許可です。
allowとdenyを書く順番は無関係。


同じ効果を1行少なく書くと、
order deny,allow
deny from 111.222.333.444
deny from example.com
で、これだとデフォルトが許可で、denyで指定した物だけが拒否です。
    • good
    • 0
この回答へのお礼

有難うございます、とても理解が深まりました。
可能であればもう1点質問をさせて頂いても宜しいでしょうか?
最初の記述ですが、

order allow,deny ←デフォルト拒否
allow from all   ←全部許可
deny from 111.222.333.444 ←その都度拒否指定

の流れだと思うのですが、デフォルト拒否を指定した後に、わざわざ全部許可を再度定義するのは無駄な様に思うのですが…。
結局許可するのであれば、最初のorder allow,denyを指定せずに

allow from all   ←全部許可
deny from 111.222.333.444 ←その都度拒否指定

↑この記述だけでもよさそうに思うのですが、何か理解できていないのでしょうか?


>>allowとdenyを書く順番は無関係。
こういった情報はとても助かります、有難うございます。
htaccessの記述は奥が深いのですね…。

お礼日時:2021/04/13 09:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!