Способы отслеживания ссылающейся страницы для создания других ссылок?
-
23-08-2019 - |
Вопрос
Мне нужно иметь возможность определить, с какой страницы пользователь только что перешел, чтобы определить, какие ссылки отображать, такие как панировочные сухари или ссылки на предыдущий следующий элемент.Это, по сути, HTTP_REFERER
функциональность в PHP, но мне нужен способ отслеживать ее на нескольких страницах.Мне также нужно "поддержать" кнопку "Назад".
Я заметил, что Facebook использует параметр запроса / получения "ref" для отслеживания ссылающейся страницы.(Они также избегают перезагрузки всей страницы, используя вместо этого AJAX, но у меня нет бюджета, чтобы сделать это прямо сейчас.) Кроме того, сайт, над которым я работаю, должен быть проиндексирован Google, поэтому этот метод также потребует, чтобы я добавил тег канонической ссылки.
Мне интересно, является ли параметр запроса ref / referrer лучшим методом или какие другие варианты существуют?
Решение
Если вы хотите панировочные сухари, вам не следует использовать HTTP_REFERER
вообще.Это должен быть логичный путь, чтобы добраться туда, где они есть, независимо от того, откуда они пришли, например User > Albums > AlbumName > Photo
, даже если они пришли по прямой ссылке, которую им дал их друг.Тем не менее, если вы действительно хотите вернуться на несколько страниц назад, просто сохраните их в виде массива в SESSION
переменная.
Я почти уверен, что Facebook просто использует ссылку GET
переменная для сбора некоторой статистики о том, какие кнопки используют пользователи, поскольку существует несколько способов перехода на одну и ту же страницу.
Ничто из этого не должно нарушать работу кнопки "Назад" или пересекаться с вашим каноническим тегом.
Из комментариев: Вы могли бы использовать ?ref=blah
тег или переменные сеанса, ($_SESSION['history'][0] = $_SERVER['HTTP_REFERER']
или REQUEST_URI
).Используйте все, что вам покажется проще всего.Переменные сеанса зависят от файлов cookie или передачи идентификатора через URL-адрес, просто загромождают URL-адрес и могут быть переданы друзьям.