Интернет. Программы. Игры. Операционные системы. Антивирусы

Как сделать редирект. Все виды

Хотите перенаправить URL-адрес из одного места в другое? В этом простом руководстве мы покажем, как можно это сделать с помощью Apache / .htaccess , PHP , JavaScript , HTML и т. д. Каждый метод редиректа HTML мы кратко поясним и продемонстрируем готовые к использованию примеры.

Редирект URL-адресов с помощью PHP

Редирект с помощью PHP выполняется с помощью функции header() , например:

Эта функция должна быть вызвана в начале веб-страницы до вывода HTML-кода . Чтобы узнать больше о настройке этого метода, ознакомьтесь с документацией PHP .

Чтобы выполнить редирект с помощью PHP через определенное время:

Редирект на example.com выполняется через 5 секунд. Вы можете изменить это значение на необходимое.

Редирект URL-адресов с помощью JavaScript

Вот самый простой способ index html редиректа с помощью JavaScript :

document.location.href = "http://example.com/";

Редирект URL-адресов с помощью HTML

Можно перенаправить пользователя на новый URL-адрес , используя старый добрый HTML . Вот пример:

Это называется meta-refresh редирект. Можно задать время (в секундах ), изменив 10 на необходимое число. Обратите внимание, что этим методом редиректа часто злоупотребляют спамеры. Поэтому будьте осторожны, если вы реализуете его на общедоступном сайте.

Редирект URL-адресов с помощью Perl

Вот два способа редиректа URL-адресов с помощью Perl :

#!/usr/bin/perl print "Location: http://example.comnn"; exit;

Редирект URL-адресов с помощью ASP (VB Script)

Чтобы перенаправить URL-адрес с помощью ASP , добавьте следующий код:

Редирект URL-адресов с помощью mod_alias Apache

Самый простой способ перенаправления на серверах Apache :

Redirect 301 /old-location.html http://example.com/new-location/

Перед тем, как сделать редирект HTML , этот код нужно добавить в файл .htaccess или файл конфигурации сервера Apache . Вот синтаксис этого метода:

[Директива] [Код состояния] [Старый URL] [Новый URL]

При необходимости можно изменить любой из этих параметров. Например, если нужно подставлять старый URL-адрес динамически, чтобы перенаправить все следующие URL-адреса :

http://example.com/old-directory/file-01.html http://example.com/old-directory/file-02.html http://example.com/old-directory/file-03.html . . .

Можно использовать RedirectMatch вместо Redirect :

RedirectMatch 301 /old-directory/file-(.*).html http://example.com/new-directory/file-$1.html

Также можно изменить код статуса с 301 (постоянный редирект ) на 302 (временный редирект ). Или на любой другой действительный код состояния. Ниже приведено руководство по регулярным выражениям, используемым в методе RedirectMatch :

  • или отсутствию символа );
  • $1 — возвращает шаблон, сопоставляемый первым (.*) .
Редирект URL-адресов с помощью mod_rewrite Apache

Более функциональный способ редиректа с помощью Apache — использовать его переписывающий модуль mod_rewrite . Вот несколько примеров, которые можно добавить в .htaccess или в файл конфигурации Apache .

Пример 1: Редирект с www на без www

Этот код редиректа HTML перенаправляет все www-версии URL-адресов на их эквивалентные версии без www .

RewriteCond %{HTTP_HOST} ^www.example.com$ RewriteRule (.*) http://example.com/$1

Это называется канонизацией. Вот несколько примечаний о регулярном выражении, используемом в этом примере:

  • . — буквально соответствует точке;
  • $ — обозначает конец запрошенного URI ;
  • (.*) — соответствует любому символу (или отсутствию символов );
Пример 2: Редирект всего домена

Чтобы осуществить редирект HTML с текущего домена на новый:

RewriteRule ^/(.*) https://new-domain.tld/$1

Аналогично можно перенаправить запросы из поддомена текущего сайта на поддомен на новом сайте:

RewriteCond %{HTTP_HOST} (.*).old-domain.tld RewriteRule ^/(.*) https://%1.new-domain.tld/$1

Вот несколько примечаний о регулярном выражении, используемом в этом примере:

  • ^ — обозначает начало запрошенного URI ;
  • (.*) — соответствует любому символу (или отсутствию символов );
  • $1 — соответствует шаблону из круглых скобок (.*) в RewriteRule ;
  • %1 — соответствует первому шаблону из круглых скобок (.*) в RewriteCond
  • — отправляет код состояния 301 и инструктирует Apache прекратить обработку набора правил.

Обратите внимание : чтобы любой из этих методов работал корректно, оба домена должны иметь одинаковую структуру файлов. Папки и ресурсы на текущем домене также должны существовать и на новом домене. В противном случае вы получите на новом домене кучу ошибок 404 .

Пример 3: Перенаправление всех файлов HTML и PHP

Вот еще один, более сложный пример скрипта редиректа HTML mod_rewrite :

RewriteCond %{REQUEST_URI} ^/old-directory/(.*).(html|php)$ RewriteRule (.*) http://example.com/new-directory/%1.%2

Мы перенаправляем все запросы к любым файлам HTML или PHP , расположенным в папке /old-directory/ . Все соответствующие запросы перенаправляются в тот же файл, который находится в /new-directory/ . Вот несколько примечаний о регулярном выражении, используемом в этом примере:

  • ^ — обозначает начало запрошенного URI;
  • (.*) — соответствует любому символу (или отсутствию символов );
  • . — буквально соответствует точке;
  • (html php) — соответствует либо html , либо php ;
  • — делает шаблон нечувствительным к регистру;
  • %1 — соответствует первому шаблону из круглых скобок (. *) в RewriteCond ;
  • %2 — соответствует второму шаблону из круглых скобок (html|php ) в RewriteCond ;
  • — отправляет код состояния 301 и инструктирует Apache прекратить обработку набора правил.
Редирект ошибки 404 с помощью Apache

Вот удобный код редиректа html HTML всех ошибок 404 «Not Found» на определенный URL .

В этой статье речь пойдет о создании скрипта php редиректа внешних ссылок. Будут рассмотрены примеры создания обычного php редиректа и редиректа с задержкой. При этом также будет рассмотрен процесс создания таймера обратного отсчета на JavaScript + JQuery и способ скрытия реферальных ссылок. После рассмотрения всех примеров будут предоставлены ссылки на скачку файлов скриптов, а также подробное руководство по установке и использованию скрипта редиректа. Ну и в заключении вы найдете код для добавления кнопок редиректа в редактор WordPress.

Идея создания данного скрипта возникла у меня после того, как я отключил плагин WpNoRef, который отвечал за индексацию внешних ссылок. О нем я уже упоминал в статье « ». Суть работы плагина заключалась в помещении всех внешних ссылок в теги и добавлении к ним атрибута rel=»nofollow».

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

Создавался специальный файл, например, redirect.php, который содержал следующий код.

Как видите, данный способ не очень удобный и имеет один очень существенный минус – для каждой ссылки нужно создавать отдельный файл и копировать его на хостинг. Поработав так какое-то время, я пришел к выводу, что пора что-то менять и написал более гибкий вариант скрипта, который не требует создания отдельных файлов.

Суть его работы состоит в том, чтобы передавать в исполняющий файл необходимые параметры при помощи . Далее скрипт обрабатывает полученные данные и перенаправляет пользователей на нужную страницу. Код в данном случае имеет следующий вид.

If (isset($_GET["url"])) {$url = $_GET["url"]; } if (!!preg_match("#(http?|ftp)://\S+[^\s.,>

Неверный формат запроса! Проверьте URL!"); } header("Location:$url"); exit();

Теперь давайте коротко разберем вышеприведенный код редиректа.

Первым делом мы проверяем, существует ли переменная переданная методом GET. Если да, то преобразовываем ее в обычную переменную. Если же нет, то присваиваем переменной $url исходное значение.

Теперь давайте немного расширим возможности нашего скрипта php редиректа и добавим возможность скрытия реферальных ссылок и вывода всего списка ссылок на экран по запросу.

Скрипт php редиректа с возможностью скрытия реферальных ссылок

Скрытие реферальных ссылок мы произведем следующим образом.

If ($key == "1") { foreach($partner as $key=>
"; exit(); }

После завершения выполнения вывода значений массива не забываем завершить работу скрипта. Теперь при переходе по ссылке с ключом вместо редиректа нам выведется страница со значениями всех партнерских ссылок и их ключами.

Ну а теперь давайте соберем все эти куски кода вместе и рассмотрим код всего скрипта php редиректа целиком.

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

Http://mysite.com/go.php?url=http://site.com

Также не забываем закрыть от индексации поисковыми системами файл редиректа go.php. Для этого добавляем в файл robots.txt, который находится в корне сайта, следующую строчку.

Disallow: /go.php

Либо же вы можете создать отдельную директорию для скриптов и поместить файл go.php туда, после чего закрыть директорию в robots.txt.

Disallow: /extension

Где extension – папка со скриптами, которая расположена в корне сайта.

Теперь давайте перейдем к рассмотрению способа создания скрипта php редиректа с задержкой и таймером обратного отсчета на JavaScript + JQuery.

Скрипт php редиректа с задержкой и таймером обратного отсчета

Код скрипта редиректа с задержкой практически ничем не будет отличаться от предыдущего варианта за исключением нескольких строк кода. В данном случае будет заменен код

Header("Location:$url");

Header("Refresh: 12; URL = $url");

где Refresh: 12 отвечает за задержку на 12 секунд.

Кроме этого мы добавим таймер обратного отсчета на нашу страницу редиректа. Код таймера обратного отсчета будет иметь следующий вид.

Переход по внешней ссылке var timetogo = 10; var timer = window.setInterval(function() { var str = timetogo; $("#counter").text(str); if (timetogo