2012-01-26 6 views
0

具体的には//mediaに行かない限り、domain1とdomain2のウェブサイトへのアクセスをすべてブロックします。これまでのところ私が持っている:.htaccess:特定のディレクトリ以外のリファラーをブロックするにはどうすればよいですか?

RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR] 
RewriteCond %{HTTP_REFERER} domain2\.com [NC] 
RewriteRule .* - [F] 

これは、そのブロックすべての要求を除いて完璧に動作します。私はこれらの2つのドメインからの着信リンクに//mediaしかアクセスできないようにしたいと考えています。これまで私はそれを理解することができませんでした。

ご協力いただきまして誠にありがとうございます。このようなものについて

+0

前の答えは申し訳ありません。私は(うまくいけば)より完全な可能な答えでそれを更新しました。 – summea

答えて

2

何:

RewriteCond %{HTTP_REFERER} (:/|\.)(domain1|domain2)\.com [NC] 
RewriteRule ^([^/]*$|media/)  -      [skip=1] 

RewriteCond %{HTTP_REFERER} (:/|\.)(domain1|domain2)\.com [NC] 
RewriteRule .*      -      [F] 

んが、外部リダイレクトは必要ありません:についてどのようにhttp://www.lyxx.com/freestuff/002.html

+1

あなたの最初のコードは正しいSummeaです。 ApacheはRewriteRuleの先頭のスラッシュを削除します。 – Gerben

+1

しかし、ブロックされていないディレクトリの場合、Apacheは正しい仮想ホストではなくデフォルトの仮想ホストを提供します!それはまったく別の問題なので、回答を受け入れたものとしてマークします。ありがとうサメア! – Julian

0

RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR] 
RewriteCond %{HTTP_REFERER} domain2\.com [NC] 
RewriteCond %{REQUEST_URI} !media [NC,OR] 
RewriteCond %{REQUEST_URI} !^$ [NC] 
RewriteRule (.*)$ $1 [R,L] 
RewriteRule .* - [F] 

は、上の構文をチェック。私はここでもあなたは*.domain1.comなどを許可していると仮定しています。

関連する問題