2013-07-29 5 views
4

Веб-сайт (wwww.fake-web-site.com) перенаправляет свои ссылки на мой сайт (www.real-web-site.com). Только первая страница отличается.Перенаправление Loop (HTTP_REFERER)

Я написал код для перенаправления всех людей, которые исходят от поддельного сайта, до google.com.

if (strpos($_SERVER['HTTP_REFERER'],'fake-web-site.com') !== false) 
    header('Location: http://www.google.com/search?q=real-web-site.com'); 

Он работает в браузере Chrome, если кто-то открывает поддельный веб-сайт и нажимает на эти ссылки, которые связаны с моей веб-сайт, он будет перенаправлен на google.com. После этого он может открыть мой сайт с google.com.

В Firefox, если кто-то открывает поддельный веб-сайт и нажимает на эти ссылки, которые связаны с моей веб-сайт, он будет перенаправлен на google.com после этого, если он нажмет на вещественно web-site.com в google.com, он перенаправляет снова на google.com!

Я думаю, что это связано с механизмом кеширования Firefox. Может кто-нибудь дать предложение?

+0

Это звучит немного запутанно. Чего вы пытаетесь достичь? Вы хотите, чтобы ваши поисковые запросы искали вашу страницу для поддельной популярности? – Mario

+0

может быть заголовком кэширования firefox –

+0

@Mario: Нет, поддельная страница привлекает моих клиентов, и ее рейтинг домена лучше меня в поисковых системах. Мне не нужны эти ссылки на мой сайт. Если кто-то хочет посетить настоящий сайт, он не должен найти его на поддельном сайте. – deepmax

ответ

0

Переадресация переходов браузеров. В зависимости от состояния ответа HTTP:

Если статус 301 Перемещено на постоянной основе, тогда браузер должен и, возможно, кешировать его.

Если состояние 302 Найдено, тогда браузер не должен и не будет кэшировать его.

Все, что осталось от браузера, чтобы решить. Из вашего кода кажется, что вы просто отвечаете 200 OK.

Вы можете установить заголовок ответа в PHP, делая например .:

header("HTTP/1.0 302 Found"); 

Это должно быть сделано, прежде чем любого другого тела или заголовка выход - если вы не используете буферизацию вывода.

+0

Интересно, позвольте мне попробовать. – deepmax

+0

Imho PHP использует 302 по умолчанию при использовании Location. Чтобы убедиться, что ответ _really_ не кэшируется, явно запретите его в HTTP-заголовке (см. Http://stackoverflow.com/a/2068407/413531) – Hirnhamster

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