0

私のサイトには次のリダイレクト スクリプトがあります。

 <script type="text/javascript">
if (document.referrer == "http://dontwantthisreferrer.com/") {
   document.location = "http://urltoredirect.com/";
 }
</script>

私の質問は: http://dontwantthisreferrer.comの完全なドメインをブロックする方法は? 今、私はhttp://dontwantthisreferrer.com/post-1/からではなく、メイン ページからのみリダイレクトしており、このドメインのすべてのアドレスからリダイレクトしたいと考えています。

4

3 に答える 3

1

indexOfドメイン名がリファラーアドレスに存在するかどうかを確認する方法を試すことができます。

if (document.referrer.indexOf("http://dontwantthisreferrer.com") == 0) {
    document.location = "http://urltoredirect.com/";
}

それ以外の場合は、正規表現を使用して同じことを行うことができますが、もう少し柔軟な方法で行うことができます。

if (/^http:\/\/(www.)?dontwantthisreferrer.com/.test(document.referrer)) {
    document.location = "http://urltoredirect.com/";
}

ちなみに、良いオプションは、タスクにサーバー側のソリューションを使用することです。たとえば、PHP、Python、Perlなどだけでなく、Webサーバーの構成(mod_rewriteなど)でも同じことが簡単に実行できます。

于 2012-05-21T08:41:41.073 に答える
0

正規表現を使用します。

if (/^https?:\/\/(www.)?dontwantthisreferrer.com\//.test(document.referrer)) {
   document.location = "http://urltoredirect.com/";
}
于 2012-05-21T08:41:20.377 に答える
0

最初にプロトコルとドメインの部分を抽出します。

var referrer = /^(https?:\/\/[^\/]*)/.exec(document.referrer)
if (referrer && referrer[1] == "http://dontwantthisreferrer.com") {
    ducument.location = "http://urltoredirect.com"
}

そうすれば、次の例のように、必要に応じてドメインの配列を簡単にテストできます。正規表現を変更して、/^https?:\/\/([^\/:]*)/プロトコルなしでドメインのみを抽出することに注意してください。

var forbidden_referrers = ["www.referrer1.com", "www.referrer2.com"]
var referrer = /^https?:\/\/([^\/:]*)/.exec(document.referrer)
referrer && for (i in forbidden_referrers) {
    forbidden_referres[i] == referrer[1] && document.location = "http://urltoredirect.com"
}
于 2012-05-21T08:54:50.177 に答える