前回「サーバレベルでIP制限をする方法」という記事を書きましたが、知り合いから「.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.は、ドメイン名を見て制限をかけるそうです…が、効いているのがよくわからない上に、動作が重たいらしいです。