Как в PHP задать редирект на другой URL до загрузки страницы?

Предположим, что вы хотите, чтобы пользователям, которые переходят на страницу https://example.com/initial.php отображалась страница https://example.com/final.php. Это можно сделать с помощью несколько методов PHP, JavaScript и HTML. В этой статье мы расскажем о каждом из методов, которые можно использовать для PHP перенаправления на другую страницу.

Вот несколько переменных, которые мы будем использовать:

<?php
$new_url = "https://example.com/final.php";
?>

Использование функции PHP header() для редиректа URL-адреса

Если хотите добавить редирект с initial.php на final.php, можно поместить на веб-странице initial.php следующий код. Он отправляет в браузер новый заголовок location:

<?php
$new_url = "https://example.com/final.php";
header("Location: ".$new_url);
?>

Здесь мы используем PHP-функцию header(), чтобы создать редирект. Нужно поместить этот код перед любым HTML или текстом. Иначе вы получите сообщение об ошибке, связанной с тем, что заголовок уже отправлен. Также можно использовать буферизацию вывода, чтобы не допустить этой ошибки отправки заголовков. В следующем примере данный способ перенаправления PHP показан в действии:

<?php
ob_start();
$new_url = "https://example.com/final.php";
header("Location: ".$new_url);
ob_end_flush();
?>

Чтобы выполнить переадресацию с помощью функции header(), функция ob_start() должна быть первой в PHP-скрипте. Благодаря этому не будут возникать ошибки заголовков.

В качестве дополнительной меры можно добавить die() или exit() сразу после редиректа заголовка, чтобы остальной код веб-страницы не выполнялся. В отдельных случаях поисковые роботы или браузеры могут не обращать внимания на указание в заголовке Location. Что таит в себе потенциальные угрозы для безопасности сайта:

<?php
$new_url = "https://example.com/final.php";
header("Location: ".$new_url);
exit();
?>

Чтобы прояснить ситуацию: die() или exit() не имеют отношения к редиректам. Они используются для предотвращения выполнения остальной части кода на веб-странице.

При PHP перенаправлении на страницу рекомендуется использовать абсолютные URL-адреса при указании значения заголовка Location. Но относительные URL-адреса тоже будут работать. Также можно использовать эту функцию для перенаправления пользователей на внешние сайты или веб-страницы.

Вывод кода JavaScript-редиректа с помощью функции PHP echo()

Это не является чистым PHP-решением. Тем не менее, оно также эффективно. Вы можете использовать функцию PHP echo() для вывода кода JavaScript, который будет обрабатывать редирект.

Если воспользуетесь этим решением, то не придется использовать буферизацию вывода. Что также предотвращает возникновение ошибок, связанных с отправкой заголовков.

Ниже приводится несколько примеров, в которых использованы разные методы JavaScript для редиректа с текущей страницы на другую:

<?php
echo "<script>self.location="https://example.com/final.php";</script>";
echo "<script>document.location.href="https://example.com/final.php";</script>";
echo "<script>window.location.href="https://example.com/final.php";</script>";
echo "<script>window.location.replace("https://example.com/final.php");</script>";
?>

Единственным недостатком этого метода перенаправления на другой сайт PHP является то, что JavaScript работает на стороне клиента. А у ваших посетителей может быть отключен JavaScript.

Использование метатегов HTML для редиректа

Также можно использовать базовый HTML для выполнения редиректа. Это может показаться непрофессиональным, но это работает. И не нужно беспокоиться о том, что в браузере отключен JavaScript или ранее была отправлена ошибка заголовков:

<meta http-equiv="Location" content="http://example.com/final.php">
<!-- The following line will redirect after the given number of seconds. Zero in our case. -->
<meta http-equiv="refresh" content="0;url=http://example.com/final.php">

Также можно использовать последнюю строку из предыдущего примера, чтобы автоматически обновлять страницу каждые «n» секунд. Например, следующий код будет автоматически обновлять страницу каждые 8 секунд:

<meta http-equiv="refresh" content="8">

Заключение

В этой статье я рассмотрел три различных метода перенаправления с index php, а также их преимущества и недостатки. Конкретный метод, который стоит использовать, зависит от задач проекта.

Перевод статьи «How can I do a redirect to different url before page load in PHP» дружной командой проекта Сайтостроение от А до Я.

PHP, Интернет-технологии, похожие статьи

Цикл for является одним из наиболее часто используемых циклов в любом языке программирования. В этой статье мы подробно рассмотрим цикл for PHP.
PHP  |  06.01.2018
Чтобы извлечь соответствующую часть данных, нужно вызвать функцию PHP preg_match() с третьим аргументом, обычно называемым «$matches».
PHP  |  27.12.2017
Функция PHP mkdir() применяется для создания каталога, заданного в pathname. Каталог создается со значением режима доступа по умолчанию 0777.
PHP  |  15.12.2017
Все мы знаем функцию printf() PHP и ее семейство. Эти функции полезны, но иногда они не обеспечивают достаточной функциональности. Кроме этого, добавление форматирующих строк в printf() не безопасно.
PHP  |  15.12.2017
PHP  |  02.01.2018  | 
Яндекс цитирования