0

我的网站上有以下重定向脚本:

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

我的问题是:如何阻止http://dontwanthisreferrer.com的完整域?现在我只从主页重定向,而不是从http://dontwanthisreferrer.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

首先提取协议和域部分:

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

这样,如果需要,就可以轻松测试域数组,如下例所示。请注意,我更改了 regex /^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 回答
0

使用正则表达式。

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