Как передать referer при редиректе?

В 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. В конце отправляем ответ на клиентский браузер.