基于referer的Javascript重定向

基于referer的Javascript重定向,javascript,redirect,referrer,Javascript,Redirect,Referrer,我有一个网站(我们称之为www.abc.com)需要重定向。登录页是www.abc.com/index.html,因此重定向需要在该页上。如果引用者为空(有人直接输入域),或者引用者来自abc.com域(例如google.com)之外,则重定向需要工作,在该域中,它应该重定向到www.abc.com/splash/index.html 我想到的最接近的东西是下面的,但它不起作用。当我去abc.com的时候,它会进入启动页面,这很好。但是,当我点击启动页面上的链接转到abc.com时,它会再次重定

我有一个网站(我们称之为www.abc.com)需要重定向。登录页是www.abc.com/index.html,因此重定向需要在该页上。如果引用者为空(有人直接输入域),或者引用者来自abc.com域(例如google.com)之外,则重定向需要工作,在该域中,它应该重定向到www.abc.com/splash/index.html

我想到的最接近的东西是下面的,但它不起作用。当我去abc.com的时候,它会进入启动页面,这很好。但是,当我点击启动页面上的链接转到abc.com时,它会再次重定向回启动页面。无限循环。不知道该在这里做什么,任何帮助都将不胜感激

<script type="text/javascript" charset="utf-8">
   if (document.referrer == '' || document.referrer.indexOf('www.abc.com') != -1) {
   top.location="http://www.abc.com/splash/index.html";
   }
</script>

如果(document.referer=''| document.referer.indexOf('www.abc.com')!=-1){
顶部。位置=”http://www.abc.com/splash/index.html";
}
声明引用者确实包含该字符串。如果我正确理解了你的文本,你会想要相反的结果

document.referrer.indexOf('www.abc.com') < 0
我想你是说

if (document.referrer == '' || document.referrer.indexOf('www.abc.com') == -1)

==
而不是
=
indexOf
如果未找到,则返回
-1

HTTP\u REFERER不保证存在或准确。不要依赖它。浏览器并不总是提供文档。参考者。如果推荐人来自https,则会被阻止,或者如果broswer阻止中的安全设置,则不会提供任何设置。这些人将永远无法通过启动页面,并且将无法使用您的网站。谢谢各位,这很有帮助。我没有意识到从一个安全的网站到一个不安全的网站会删除推荐人。这是有道理的,当我从谷歌来到我的网站,它不会给我一个推荐人。我必须找到另一种方法……嗯,差不多。我遇到的问题是,当我使用“<0”时,我通过谷歌搜索我的网站,然后单击谷歌搜索结果中的链接,它会进入www.abc.com/index.html页面,而不是启动页面。我在上面的方式(即!=-1)并没有做到这一点-它会进入初始页面。但是当我这样做的时候,上面提到的无限循环问题就出现了。那么,我如何让它以两种方式进入启动页面:(1)当我直接输入地址栏时,以及2)通过谷歌搜索或类似方式单击链接时?仅仅因为它在出错时起作用,并不意味着它是正确的!使用.indexOf确定推荐人是否在外部是幼稚的。你真的应该检查一下实际的域名不是abc.com。也许你会看到:我真的很感激你的帮助,但这其实并不幼稚。使用location.hostname.match检查实际域会告诉我当前所在的域始终是www.abc.com。那有什么用?我需要的是推荐人,而不是abc.com以外的任何内容都会引起轰动的域名。这很幼稚,因为otherdomain.com/q?goto=www.abc.com和将匹配您的.indexOf搜索,即,您不能使用它来区分这两种情况。您需要解析URL。我并不是建议使用location.hostname,但在该线程中还有其他一些指针,指示如何根据其语法解析url。好的,我已经将我的答案更加明确了。
document.referrer.match(/^http:\/\/www\.abc\.com.*/)
if (document.referrer == '' || document.referrer.indexOf('www.abc.com') == -1)