アクセス制御 with .htaccess

アクセス制御 with .htaccessについて

直接リンクでお困りの方に。

アクセス制御 with .htaccess

特定のホスト、IP、URLからのアクセスを制限することができます。
外部からの直接リンクで困っている場合に役立ちます。

特定のホスト、IPからのアクセスを制限します。
以下は特定のアクセスを拒否します。

order allow,deny
allow from all
deny from meiwaku.jp
deny from .meiwaku.jp
deny from 192.168.

それぞれの意味は以下の通りです。

order allow,deny →許可するアクセス以外は拒否
allow from all →拒否するアクセス以外は許可
deny from meiwaku.jp →meiwaku.jpからのアクセスを拒否
deny from .meiwaku.com →*.meiwaku.comからのアクセスを拒否 (頭文字の「.(ドット)」があることに注意)
deny from 192.168. →IPが192.168.*.*からのアクセスを拒否 (最後の「.(ドット)」があることに注意)

特定のホスト、IPからのアクセスを制限します。
以下は特定のアクセスを許可します。
拒否する場合と allow と deny の位置が違うことに注意してください。

order deny,allow
deny from all
allow from welcome.jp
allow from .welcome.jp
allow from 192.168.

order deny,allow →拒否するアクセス以外は許可
deny from all →許可するアクセス以外は拒否
allow from welcome.jp →welcome.jpからのアクセスを 許可
allow from .welcome.jp →*.welcome.comからのアクセスを 許可 (頭文字の「.(ドット)」があることに注意)
allow from 192.168. →IPが192.168.*.*からのアクセスを許可  (最後の「.(ドット)」があることに注意)

外部からの直接リンクを制限する場合は以下のようにします。
参照元(リファラー)をチェックしてアクセスを制限します。

SetEnvIf Referer "www.fya.jp/~アカウント" ref_check
Order Deny,Allow
Deny from all
Allow from env=ref_chek

それぞれの意味は以下の通りです。

SetEnvIf Referer "www.fya.jp/~アカウント" ref_check →許可するURLを設定(複数可)
Order Deny,Allow →許可されたアクセス以外は拒否
Deny from all →全てのアクセスを拒否
Allow from env=ref_chek →許可したURLからのアクセスを許可

全てのアクセスを拒否する場合は以下のように記述します。

order deny,allow
deny from all

最後に。
素材の配布サイトでよく見かけることがある、アクセス制限です。
他には、管理人のアクセスのみを許可したりできます。(認証でいいかも?)
また、スクリプトのログファイルなどを悪戯されないようにすることも可能です。
セキュリティとしても役立つので、お試し下さい。

検索エンジン回避方法

検索エンジンを避ける方法。
以下は検索エンジンの巡回、検索結果からのリンクを遮断する設定です。

# 検索エンジン回避
# MSN
SetEnvIfNoCase User-Agent "msnbot" shutout
SetEnvIf Referer "^http://search\.msn\..*/results\.aspx\?" shutout
SetEnvIf Referer "^http://search\.live\..*/results\.aspx\?" shutout
# Google
SetEnvIfNoCase User-Agent "Googlebot" shutout
SetEnvIf User-Agent "Googlebot-Image" shutout
SetEnvIf Referer "^http://www\.google\..*/search" shutout
SetEnvIf Referer "^http://images\.google\..*/images" shutout
Deny from 66.249.64.0/19
# Yahoo
SetEnvIfNoCase User-Agent "Yahoo" shutout
SetEnvIfNoCase User-Agent "Slurp" shutout
SetEnvIfNoCase User-Agent "Y!J" shutout
SetEnvIf Referer "^http.*search\.yahoo\..*\?" shutout
Deny from 72.30.0.0/16
Deny from 74.6.0.0/16
# その他
SetEnvIf User-Agent "inktomi" shutout
SetEnvIf User-Agent "moget" shutout
SetEnvIf User-Agent "ichiro" shutout
SetEnvIf User-Agent "ia_archiver" shutout
SetEnvIfNoCase User-Agent "MarkAgent" shutout
SetEnvIfNoCase User-Agent "marsflag" shutout
SetEnvIfNoCase User-Agent "spider" shutout
SetEnvIfNoCase User-Agent "Baiduspider" shutout
SetEnvIfNoCase User-Agent "Crawler" shutout
SetEnvIfNoCase User-Agent "Yeti" shutout
SetEnvIf Referer "^http://baidu\." shutout
SetEnvIf Referer "^http.*\.baidu\." shutout
Deny from 220.88.0.0/13
Deny from 61.247.192.0/19
Deny from 202.108.0.0/16
Deny from 60.24.0.0/13
Deny from 122.152.128.0/23
Deny from 202.106.0.0/16
Deny from 221.216.0.0/13
Deny from 61.135.0.0/16
Deny from 203.192.149.0/24
# 検索エンジン固有UA
SetEnvIf User-Agent "http" shutout

order Allow,Deny
Allow from all
Deny from env=shutout

.htaccessではありませんが、トップディレクトリに以下を記述した robots.txt を設置することでも威力を発揮します。

User-Agent: *
Disallow: /

各検索エンジンの巡回ロボットにむけたメッセージカードとでも思って下さい。
この階層およびそれ以下の階層の巡回を禁止するといった記述です。

こちらも.htaccessではないですが、やっておいてそんは無いというものです。
各HTMLの <head> ~ </head> の間に以下のMETA(メタ)情報を記述します。

<meta name="Robots" content="NOINDEX,NOFOLLOW">

NOINDEXとは、このページの巡回を拒否するという意味です。
NOFOLLOWとは、この階層配下のページの巡回を拒否するという意味です。

最後に。
robots.txtとMETAについては巡回側に委ねた設定なので、巡回側が無視することもあります。
.htaccessはアクセスされたサーバー側で判断するので強固なものになるでしょう。
ただし、既にインデックス化などされた場合は別途各検索エンジン側に削除を依頼するしかありません。
任意に削除できるサービスが行われているので利用してみましょう。