.htaccessでアクセス制限をかける方法

サーバ
スポンサーリンク

前回「サーバレベルでIP制限をする方法 | 1bit::memo」という記事を書きましたが、知り合いから「.htaccessで気軽にやりたい」と言われw、分からないながらも調べてみたので、その方法をメモ。

コード

“`#
#1.ブラウザ環境が日本語以外の時にアクセスを制限する
#
SetEnvIf Accept-Language “^$” non_japanese

#
#2.ブラウザ環境が日本語以外の時にアクセスを制限する
#調べていたら書き方が2種類あったのでねんのため両方やっておくw
#
SetEnvIf Accept-Language “^[^(ja)]+$” non_jp

#
#3.cn|tw言語のブラウザで来た時に制限する
#
SetEnvIf Accept-Language “zh-(cn|tw)” cn_lang

#
#4.HTTP_EXPECTを設定する英文BOTのアクセス規制
#
SetEnvIf Expect “^.+$” spam_proxy

order allow,deny
allow from all

#5.上記で設定したものをはじく記述
deny from env=non_japanese
deny from env=non_jp
deny from env=cn_lang
deny from env=spam_proxy

#6.しつこいIPアドレスを制限
deny from xxx.xxx.xxx.xxx

#7. .cnドメインを制限(動作重たくなります)
deny from .cn“`

簡単な解説

  • 1.2.3.は、ブラウザの言語設定を見て制限をかけます。言語設定を変えたらあっさり通るので、正直強力ではないですが、気休めにやっておくという感じになります。
  • 4.は、海外のBOTの中には、「HTTP_EXPECT」という設定を使ってくるものがあるらしいです。それらを使ってアクセスしてきたものに対して制限をかけます。
  • 1〜4は書いただけではだめで、5.で実際にダメだと記述する必要があります。セットだと考えてください。
  • 6.しつこいIPアドレスが分かっている場合は、直接記述するのが手っ取り早いのかもしれません。イタチごっこな気はしますが、やらないよりはずっとましだと思います。
  • 7.は、ドメイン名を見て制限をかけるそうです…が、効いているのがよくわからない上に、動作が重たいらしいです。

参考