.htaccessで、IPアドレスとユーザエージェントの2つを併用してアクセス制限をかける事は出来るでしょうか?

今回の併用というのは、IP or UA ではなく IP and UA です。
両方を満たした場合のみアクセスを許可したいのです。
どなたか分かるかたご教授くださいませm(_ _ )m

ちなみに以下の例ように記述すると、IP or UAになってしまいました。
SetEnvIf User-Agent "docomo" allow_ua
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
allow from env=allow_ua

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/09/24 17:46:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pacochi No.3

回答回数247ベストアンサー獲得回数113

ポイント100pt

SetEnvIf を使うならこんな感じになります。 AND はどうしても回りくどくなるみたいです。

SetEnvIf User-Agent "docomo" allow_ua
SetEnvIf Remote_Addr ".*" addr=deny
SetEnvIf Remote_Addr "^(xxx\.xxx\.xxx\.xxx)$" addr=allow
SetEnvIf addr deny !allow_ua

order deny,allow
deny from all
allow from env=allow_ua
id:pikab1

頂いたソースをちょっと編集して、やりたい事が実現できました。

ありがとうございます。

他の方の意見も参考にし、一番スマートな方法を取ろうと思います。

2010/09/24 17:42:44

その他の回答2件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント30pt

mod_access - Apache HTTP サーバ

確か条件は複数指定可能のはず。

SetEnvIf User-Agent "docomo" allow_ua
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx env=allow_ua

でいけると思う。

id:pikab1

今試してみたのですが、この設定でもorになってしまっているような気がしますね。

2010/09/24 16:56:05
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント60pt
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx

でIP制限を掛けた上で以下を追加するとかでどうでしょう?

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} DoCoMo
RewriteRule . - [F,L]

DoCoMo以外も許可するUAがあるならDoCoMoの部分を (DoCoMo|SoftBank|Vodafone) という感じに変えれば良いです。

id:pikab1

うーん、そのままコピペではうまく行きませんでしたね。

下のRewiteEngine周りが全く分かってないので、ちょっと調べてみます・・・。

2010/09/24 17:22:24
id:pacochi No.3

回答回数247ベストアンサー獲得回数113ここでベストアンサー

ポイント100pt

SetEnvIf を使うならこんな感じになります。 AND はどうしても回りくどくなるみたいです。

SetEnvIf User-Agent "docomo" allow_ua
SetEnvIf Remote_Addr ".*" addr=deny
SetEnvIf Remote_Addr "^(xxx\.xxx\.xxx\.xxx)$" addr=allow
SetEnvIf addr deny !allow_ua

order deny,allow
deny from all
allow from env=allow_ua
id:pikab1

頂いたソースをちょっと編集して、やりたい事が実現できました。

ありがとうございます。

他の方の意見も参考にし、一番スマートな方法を取ろうと思います。

2010/09/24 17:42:44
  • id:b-wind
    >この設定でもorになってしまっているような気がしますね。
    失礼。そういえばそうだった。
    逆にダメなパターンを列挙するしかなさそうな気がする。
  • id:y-kawaz
    あ、すみません。RewriteCondの条件式が逆でした。
    RewriteRule の F は拒否なので、RewriteCondは以下のように ! を付けて NOT 条件にすれば期待通りの動作になると思います。

    RewriteCond %{HTTP_USER_AGENT} !DoCoMo

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

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

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

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