Как замаскировать реферальные URL в адресной строке
Допустим, у меня есть реферальный URL http://www.example.com/r?ref=86745348 и я хочу полностью скрыть часть URL r? Ref = 86745348 от моих посетителей.
Я попробовал этот подход:
<?php
header("Location: http://www.example.com/r?ref=86745348");
exit;
?>
и я пробовал URL-адреса, такие как TinyURL.
Все мои попытки скрывают URL в гиперссылке, но не скрывают URL в адресной строке в браузере пользователя.
Независимо от того, что я делаю, когда пользователь попадает на реферальную страницу, он может видеть реферальную ссылку, удалять ее и обманывать меня из моего реферала.
Итак, мой вопрос, как я могу скрыть реферальную ссылку из адресной строки?
6 ответов
Я согласен с @duskwuff. Это неправильно... Но только для объема знаний. Это будет работать Создайте HTML-страницу со следующим кодом и отправьте пользователей на эту страницу.
<iframe src="http://www.example.com" width="100%" height="1024"></iframe>
IDEA: загрузка страницы A внутри страницы B с помощью полноразмерного фрейма страницы, чтобы скрыть URL страницы A
Ты не можешь
Если ваш бизнес-план зависит от того, чтобы пользователи не поняли, что вы берете плату за рефералов, вам нужно сделать шаг назад и пересмотреть то, что вы делаете.
Ну, первый вопрос должен быть - кто именно контролирует эти параметры, которые действуют как рефералы? Я предполагаю, что это не ваш сервер и скрипт, который анализирует $_GET['ref']
параметр нет?
Возможно, если сервер "считает" рефералов, на самом деле использует $_REQUEST
параметр в отличие от простого "в поле зрения" $_GET
те, то вы могли бы использовать $_POST
следовательно, "скрывая" параметры от пользователей.
Быстрый поиск нового и улучшенного поиска позволил найти этот полезный ответ, касающийся перенаправлений с $_POST
данные.
Один из способов сделать это - использовать настройку истории Broswer. Ниже приведен фрагмент кода, который помог мне в моем решении.
<script>
$(document).ready(function () {
//Masking the Url
var loc = window.location;
var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);
var absolutepath = loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
window.history.pushState("Object Or String", "Title", absolutepath);
});
</script>
Просто скопируйте и вставьте этот код в ваш файл.htaccess. RewriteEngine On RewriteCond %{REQUEST_FILENAME}!-F RewriteRule ^([^.]+)$ $1.php [NC,L]
Очень просто
Логика, которую вы пытаетесь достичь, может быть достигнута только на принимающей стороне гиперссылки - вы не можете обмануть браузер, чтобы он посетил один URL, но сказал пользователю, что он находится на другом, так как это было бы огромной угрозой безопасности.
Если служба, на которую вы ссылаетесь, разумным образом внедрила отслеживание рефералов, файл cookie будет установлен, как только пользователь попадет на его сайт, так что удаление строки запроса не повлияет на отслеживание реферала. Целевой сайт может даже привести в порядок URL-адрес, перенаправив пользователей на версию без строки запроса, но, опять же, это то, чего могут достичь только они.
Если целевой сайт реализован таким образом, что удаление строки запроса достаточно для того, чтобы отнять у вас плату за реферал, вас ограбят именно они, а не пользователи.