2011-07-27 7 views
2

apache htpasswdを使用してパスワードで保護されたサイトを開発中です。パスワードで保護されたサイトでFB共有を許可する

FB共有からの要求をパスワードで保護されないように除外するにはどうすればよいですか?

つまり、ユーザーがブラウザからアクセスしようとするとパスワード保護されることを望みますが、FB共有ピングからの要求の場合は許可する必要があります。

FB共有のpingには、このユーザーエージェントfacebookexternalhit/1.1がありますが、その実装方法はわかりません。

はありがとう、
ティー

答えて

7

この答えは、あなたは、Apache 2.1以降で使用している前提としていますmod_authz_hostモジュールで

を、あなたは、.htaccessファイルや<場所にホスト名でアクセス制御を行うことができます>または<ディレクトリ>例えば、httpd.confファイルのセクション、:あなたはここで、部分的なドメイン名を使用することができます

<Location /> 
    Allow from apache.org 
    Allow from .net example.edu 
</Location> 

注ので、www.apacこの例では、he.orgにアクセスが許可されます。

、あなたがmod_authz_hostがインストールされていることを確認してくださいあなたのhttpd.confで次のような行を確認するには:これで

LoadModule authz_host_module modules/mod_authz_host.so 

一つの欠点は、各アクセスのための逆引き参照を行うということです、これはパフォーマンス上の問題であるかどうかは関係ありません。

別のオプションは、User-Agentによって制限することです。しかし、User-Agentは非常に簡単に偽装することができるため、これは信頼性の低い手法です。 D

User-Agentで制限するには、mod_authz_hostモジュールに加えてmod_setenvifモジュールもロードする必要があります。 、>

LoadModule setenvif_module modules/mod_setenvif.so 

その後、あなたは<場所でのアクセス制御を設定することができ<ディレクトリ>、または.htaccessを以下のように:あなたのhttpd.confで次のような行をチェック

SetEnvIf User-Agent ^facebookexternalhit/1\.1 let_me_in 
<Location /> 
    Order Deny,Allow 
    Deny from all 
    Allow from env=let_me_in 
</Location> 
関連する問題