В PHP для передачи информации о реферере при редиректе можно использовать заголовок "Referer". Здесь я покажу два примера – один с использованием функции header(), другой с использованием библиотеки Symfony.
1. Использование функции header():
<?php $url = "http://новый-адрес.ru"; $referer = $_SERVER['HTTP_REFERER']; header("Location: $url"); header("Referer: $referer"); exit; ?>
В этом примере мы получаем текущий реферер из переменной $_SERVER['HTTP_REFERER'] и устанавливаем его в заголовок при помощи функции header() перед выполнением редиректа по новому URL.
2. Использование библиотеки Symfony:
<?php use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingGeneratorUrlGeneratorInterface; use SymfonyComponentHttpFoundationRedirectResponse; $request = Request::createFromGlobals(); $referer = $request->headers->get('referer'); $url = "http://новый-адрес.ru"; $response = new RedirectResponse($url); $response->headers->set('Referer', $referer); $response->send(); exit; ?>
Здесь мы используем компоненты Symfony – Request, Response и RedirectResponse. Сначала мы создаем объект Request, получаем текущий реферер и новый URL. Затем создаем объект RedirectResponse для редиректа и устанавливаем в него реферер в заголовке headers. В конце отправляем ответ на клиентский браузер.