2013-11-13 4 views
0

У меня есть веб-сайт (назовем его www.abc.com), что мне нужно переадресовать. Целевая страница - www.abc.com/index.html, поэтому перенаправление должно быть на этой странице. Переадресация должна работать, если реферер имеет значение null (кто-то напрямую вводит домен), или реферер поступает извне домена abc.com (например, google.com), в котором он должен перенаправляться на www.abc.com/splash /index.html.Переадресация Javascript на основе referrer

Ближайшая вещь, которую я придумал, ниже, но она не работает. Когда я перехожу на 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> 
+1

HTTP_REFERER не гарантируется наличие или точность. Не полагайтесь на это. –

+1

Браузеры не всегда предоставляют document.referrer. Если реферер находится с https, он заблокирован или если параметры безопасности в блоке broswer отсутствуют, он не предоставляется. Эти люди никогда не пройдут мимо страницы всплеска и будут отрезаны от возможности использовать ваш сайт. – Wayne

+0

Спасибо, ребята, это полезно. Я не понимал, что переход с безопасного сайта на небезопасный сайт приведет к удалению реферера. Это имеет смысл, что, когда я прихожу из Google на свой сайт, он не дает мне ссылку. Я должен найти другой подход ... – slybitz

ответ

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

утверждает, что реферер делает включить эту строку. Если я правильно понимаю ваш текст, вы хотите сделать противоположное.

document.referrer.indexOf('www.abc.com') < 0 

EDIT Или, чтобы сделать правосудие к синтаксису URL:

document.referrer.match(/^http:\/\/www\.abc\.com.*/) 
+0

Хорошо. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую «<0», и я ищу свой сайт через google и нажимаю ссылку из результатов поиска google, он переходит на страницу www.abc.com/index.html вместо всплеска стр. То, как я это делаю выше (т. Е.! = - 1), не делает этого - он переходит на страницу всплеска. Но тогда проблема бесконечного цикла, о которой я говорил выше, появляется, когда я делаю это так. Итак, как мне заставить его перейти на страницу всплеска в обоих направлениях: (1) когда я вхожу в адрес непосредственно в адресную строку и 2) щелкните ссылку с помощью поиска Google или аналогичного? – slybitz

+0

Только потому, что он работает, когда делаете это неправильно, это не значит, что это правильно! Ваше использование .indexOf для определения того, является ли реферер внешним или нет, наивно. Вы действительно должны проверить, что фактическое доменное имя не является abc.com. Возможно, посмотрите на это: http://stackoverflow.com/questions/4140324/parse-url-with-javascript –

+0

Я действительно ценю помощь, но на самом деле это не наивно. проверка фактического домена с помощью location.hostname.match сообщит мне домен, в котором я сейчас, на котором всегда будет www.abc.com. что хорошего в этом? Мне нужен реферер, а не домен, где ничего за пределами abc.com, поскольку реферер должен ударить всплеск. – slybitz

1

Я думаю, что вы имеете в виду

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

== вместо !=. indexOf-1 если не не найдено.

Смежные вопросы