Как в 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 показан в действии:

<?phpob_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 для редиректа с текущей страницы на другую:

<?phpecho "<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, а также их преимущества и недостатки. Конкретный способ, который следует использовать, зависит от задач проекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *