2016-08-16 9 views
0

単一ドメインのリファラーのみを許可するように、ウェブサイトへのアクセスを制限します。 .htaccessファイルを正しく動作させることができません。 私はhttp://domainname.comから参照していると言います - アクセスが許可されます。 またはhttp://subdomain.domainname.com - アクセスが許可されます。.htaccessを使用して単一リファラードメインからウェブページへのアクセスを制限する

しかし、他の参照元(またはURLの入力)はブロックされ、アクセス拒否ページに誘導されます。

コードは次のよう(注意私はdomainname.com

RewriteEngine On 
RewriteBase/

# allow these referers to passthrough 
RewriteCond %{HTTP_REFERER} ^http://(protect|unprotected)\.domainname\.com 
RewriteRule^- [L] 

# everybody else receives a forbidden 
RewriteRule^- [F] 

ErrorDocument 403 /forbidden.html 
+0

あなたのコードを参照する必要があります...それなしで助けることはできません。 –

+0

あなたのコードを質問に追加してください([編集](/ posts/38975240/edit)ボタン)、コメントを削除してください - コメントのコードを読むことができません。 –

+0

問題は何ですか?他の参照元へのアクセスを許可していますか?最初のRewriteRuleを削除することもできますが、参照URLの前にネゲーターを追加する必要があります: '!^ http:...'。 –

答えて

1

上ANYリファラページからのアクセスを許可する必要があるHTTP Refererヘッダは一部だけでリンクがある場合、要求は。例:から来ていたと言いますwww.example.net

<a href="http://www.example.com/some/path>Click here</a> 

からウェブページをリクエストはhttp://www.example.com/some/pathためなり、Refererヘッダがwww.example.netからURIを含むであろう。

特定のリファラーなしでリクエストをブロックすると、直接リクエストもブロックされます。また、リファラーヘッダーはクライアントによって送信されるため、信頼できるインジケータではありません。

Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content- 5.5.2 Refererによると、クライアントはドメイン名をまったく含まないpartial-URIを送信することがあります。


あなたがdomainname.comまたはそのサブドメインのいずれかのいずれかからの要求を許可したい場合、あなたは、

RewriteCond %{HTTP_REFERER} ^http://(?:.*\.)?domainname\.com 
RewriteRule^- [L] 

RewriteRule^- [F] 

または他の方法でラウンドを確認するかもしれないあなたがそれを否定するとき禁じる、あなたの質問に答えるために

RewriteCond %{HTTP_REFERER} !^http://(?:.*\.)?domainname\.com 
RewriteRule^- [F] 

複数の条件、COND1またはCOND2の1または指揮をチェックするには3の場合、ornext|ORフラグ付きのRewriteCondを使用する必要があります。

RewriteCond %{HTTP_REFERER} ^http://(?:.*\.)?nature\.com [OR] 
RewriteCond %{HTTP_REFERER} ^http://(?:.*\.)?adclick\.g\.doubleclick\.net [OR] 
RewriteCond %{HTTP_REFERER} ^http://(?:.*\.)?onepointedpixel\.com 
RewriteRule^- [L] 
+0

ありがとうございます。テストURLからは動作しますが、クライアントのバナー広告からクリックすると失敗します。 (バナーのクリックは広告のクリックURLを介して行われますが、問題が発生する可能性がありますか?) リスト内のすべてのURLからのアクセスを許可し、すべてを拒否する必要があります。しかし、私はユーザーにページリフレッシュを許可したい。 ' でRewriteBaseにRewriteEngine/ するRewriteCondの%{HTTP_REFERER} ^ます。http://(:?。* \。)自然\ .COM するRewriteCond%{HTTP_REFERER} ^ます。http://?(?:。* \ )? adclick \ .g \ .doubleclick \ .net RewriteCond%{HTTP_REFERER}^http://(?:。* \)?onepointedpixel \。comの のRewriteRule^- [L] のRewriteRule^- [F] ' – mattw

+0

私もお聞きしたかった:私は私のリファラが あるので、もし、参照ドメイン上の参照文書、または単にドメインを指定する必要がありますHTTP ://www.nature.com/nrg/index.html?test = ads URL全体を指定する必要がありますか? – mattw

+0

好きなものをチェックできます。これは単なる正規表現です。正規表現がマッチすると、条件は真であり、正規表現がマッチしない場合、条件は偽です。それはあなたが達成したいことにかかっています。また、複数の 'RewriteCond'を持つ場合、条件はすべて真でなければなりません。それらのうちの1つだけと一致させたい場合は、[[OR] 'を使用する必要があります。[' RewriteCond'](http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond) –

関連する問題