Как сделать редирект URL-адреса

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

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

Редирект при помощи PHP выполняется при помощи возможности header(), например:

<?php header('location: http://example.com/');exit;?>

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

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

<?phpheader('Refresh:5; URL=http://example.com/');exit;?>

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

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

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

<script type="text/javascript">document.location.href = 'http://example.com/';</script>

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

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

<meta http-equiv="refresh" content="10; url=http://example.com/" />

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

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

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

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

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

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

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

<%@ Language=VBScript %><% response.status="301 moved permanently" Response.AddHeader "Location", "http://example.com" %>

Редирект 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.htmlhttp://example.com/old-directory/file-02.htmlhttp://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.

<IfModule mod_rewrite.c>RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]RewriteRule(.*) http://example.com/$1 [R=301,L]</IfModule>

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

  • ^ — обозначает начало запрошенного URI;
  • . — буквально соответствует точке;
  • $ — обозначает конец запрошенного URI;
  • [NC] — делает шаблон нечувствительным к регистру;
  • (.*) — соответствует любому символу (или отсутствию символов);
  • $1 — соответствует шаблону из круглых скобок (.*) в RewriteRule ;
  • [R=301,L] — отправляет код состояния 301 и инструктирует Apache прекратить обработку набора правил.

Пример 2: Редирект всего домена

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

<IfModule mod_rewrite.c>RewriteRule ^/(.*) https://new-domain.tld/$1 [R=301,L]</IfModule>

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

<IfModule mod_rewrite.c>RewriteCond %{HTTP_HOST} (.*).old-domain.tld [NC]RewriteRule ^/(.*) https://%1.new-domain.tld/$1 [R=301,L]</IfModule>

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

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

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

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

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

<IfModule mod_rewrite.c>RewriteCond %{REQUEST_URI} ^/old-directory/(.*).(html|php)$ [NC]RewriteRule (.*) http://example.com/new-directory/%1.%2 [R=301,L]</IfModule>

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

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

Редирект ошибки 404 при помощи Apache

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

ErrorDocument 404 http://example.com/wherever/

Просто измените URL-адрес на нужный и добавьте код в файл .htaccess в корневой папке веб-сайта или добавьте его в файл конфигурации Apache .

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

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