Как сделать редирект на PHP


Делаем редирект 301 на PHP

Как сделать редирект 301 на PHP и для чего он может быть полезен?

Redirect 301 PHP

Redirect 301 PHP

Сегодня я решил описать пример не совсем стандартного использования редиректа 301 на PHP.

Если вы являетесь постоянными читателями моего блога, или просто моими знакомыми, то знаете, что чувство юмора у меня достаточно здоровое, которое по возможности я пытаюсь вставить всюду и в большей степени благодаря ему (здоровому чувству юмора), я воспринимаю окружающий меня мир, не так критично.

Ну да ладно, обо всем по порядку.

Как правильно сделать редирект на PHP

В целом, редирект в ПХП можно рализовать двумя способами:

1.  Используя заголовок header();

2. C помощи вывода мета-тега на страницу;

Чаще всего, redirect 301 используется для реализации оптимизации сайта, в достаточно широком диапазоне, и делается он средствами .htaccess.

Но склеивать доменные имена мы сегодня не будем, т. к. об этом я уже писал, а используем redirect для защиты сайта от взлома, т. е. немного нестандартно. :)

При использовании функции header(); важно помнить о том, что она должна вызываться и соответственно отправлять заголовки до вывода любого текста в скрипте!

Синтаксис функции header выглядит вот так:

<?php
header('Location: http://master-it.biz');
?>

если же мы хотим. чтобы пользователь увидел какое-то содержание на странице, то необходимо сделать задержку в n-е количество секунд:

<?php
header('Refresh: 10; URL=http://master-it.biz');
echo 'здесь пишем текст, или хоть целую html страницу';
?>

Редирект с помощи вывода html мета-тега на страницу, выглядит так:

<?php
echo '<meta http-equiv="refresh" content="0;URL=http://master-it.biz/">';
?>

301 redirect на PHP и безопасность сайта

Веб сервер, как всем  известно имеет достаточно широкий диапазон вывода кода ответов, и если о том, как использовать Error 404, not found для мониторинга безопасности сайта я уже писал, то и коды  Forbidden 403 (доступ запрещен)  and 401  Unauthorized (требуется аутентификая)   тоже не мог оставить без внимания.

Например, вы решили закрыть доступ к файлу wp-config.php в .htaccess следующим образом:

<files "wp-config.php">
order allow,deny
deny from all
</files>

Следовательно, когда злоумышленник будет обращаться к скрипту wp-config.php или другой закрытой папке [файлу, скрипту] на сайте, он будет видеть такую страницу:

Forbidden 403 (Доступ запрещен)

Forbidden 403 (Доступ запрещен)

Так, почему бы его немного не взбодрить, и не перебросить на сайт МВД например. :) Естественно, все его данные скрипт обработчик ошибки 403 сохранит в базу или файл. 😉

Аналогичным образом, можно поступить с кодом 401  Unauthorized, который будет возвращаться в случае неудачной аутентификации в скрипте wp-login.php

AuthType basic
AuthName 'Authorization... please'
AuthUserFile "/home/server/master/hide/pass/.htpasswd"
<Files "wp-login.php">
Require valid-user
</Files>

Зачем лишний раз, хацкеру юзеру видеть страницу с 401  Unauthorized

401  Unauthorized (требуется авторизация)

401 Unauthorized (требуется авторизация)

Пусть лучше почитает законы, и попытается осознать тот факт, что за сайтом наблюдает достаточно гибкий админ. :)

Реализация перенаправляния в .htaccess 

Для того, чтобы веб сервер корректно перенаправлял пользователя в соответствии с кодами своих ответов, пишем простой код в .htaccess

ErrorDocument 403 /redirect.php
# обрабатываем код 403

ErrorDocument 401 /redirect.php
# обрабатываем код 401

Теперь только осталось создать скрипт redirect.php примерно с таким содержанием:

<?php
//здесь пишем код сохранения данных юзера
Header('Refresh: 1; URL=http://mvd.ru');
echo '<h1>Подождите пожалуйста 1 сек. данные записываются.)</h1>';
exit;
?>

И уж поверьте моей совести, юзеру после такого стресса, скорее всего, больше не захочется просматривать содержимое закрытых файлов и папок. 😉

Как скрыть реферальную ссылку?

Многие веб мастера в качестве дополнительного источника дохода, размещают на своих сайтах реферальные ссылки. Обычно реферальные ссылки имеют вид: site.com/product?ref=26

Что, как вы догадываетесь, не очень хорошо влияет на кликабельность последних. :) Поэтому одним из вариантов сокрытия скрытия реферальных ссылок является все тот-же редирект 301 с помощью PHP.

Если вам необходимо сделать реферальную ссылку на продукт, который продается в интернет магазине, то вы можете просто создать каталог product в котором разместить PHP скрипт с реферальной ссылкой. Пример:

<?php
header("Location:site.com/product?ref=26");
exit();
?>

Далее сценарию редиректа нужно придумать подходящее имя, которое будет соответствовать рекламируемому товару, например philips.php.

В итоге, вместо реферальной ссылки пользователь увидит в строке состояние браузера линк: ваш_сайт.ру/product/philips.php, а когда нажмет на нее, то  будет переброшен по реферальной ссылке. 😉