.htaccessの設定で質問がございます。

下記のような設定をすることは可能でしょうか?また、実施どのように設定するでしょうか?

(1)2つの特定IPからしかアクセスは認めない。それ以外は403エラー
(2)IP(a)からアクセスした場合は、BASIC認証はかからないで、そのままアクセス可能
(3)IP(b)からアクセスした場合は、BASIC認証がかかり、ID/PASSをいれないとアクセスが不可能

以上の場合、.htaccessはどのように記載すれば良いでしょうか
どうぞ、よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/06/05 10:25:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:papa-tomo No.1

回答回数362ベストアンサー獲得回数107

ポイント50pt

できますよ。

例えば

Deny from all
Allow from 10.1.2.3
Allow from 10.1.2.10


と書けば、10.1.2.3と10.1.2.10からアクセスできます。Denyで不許可した後に、Allowで許可します。詳しくは、mod_accessのリファレンスを見てもらえればと思います。色々と例題もありますから、試してみると良いと思います。

リファレンスマニュアル:
http://httpd.apache.org/docs/2.0/ja/mod/mod_access.html

追記:
BASIC認証との組み合わせも可能です。

Deny from all
Allow from 10.1.2.3
Allow from 10.1.2.10
AuthName "for Admin"
AuthType Basic


とか。

アドレスによって変えるためには、RewriteCondやRewriteRuleを使ってルールを書かなければならないと思います。かなり難易度は高いです。

良い例題を見つけたら報告します。

id:papa-tomo

私なら、2つのルールがあるなら、2つのURLを用意して、aliasを使って同じフォルダにアクセスさせます。

そして、それぞれに2番目の例題のような制限を書きます。違うURLでのアクセスになりますが、実際にアクセスするフォルダが同じになります。

この方法が気に入っているのは、別々の制限を分かりやすく書けるからです。

2012/05/29 12:38:21
id:TransFreeBSD No.2

回答回数668ベストアンサー獲得回数268

ポイント50pt

apache2.4からは<SatisfyAll>, <SatisfyOne>ディレクティブが使えるようです。
http://httpd.apache.org/docs/current/ja/howto/auth.html#beyond
試した事はないのですが、これでいくと、

AuthType Basic
AuthName "hogehoge"
AuthUserFile /path/to/passwords
Require ip 192.168.x.a
<SatisfyAll>
  Require ip 192.168.x.b
  Require valid-user
</SatisfyAll>

こんな感じになると思います。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません