Хочете перенаправлення 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 на необхідне число. Зверніть увагу, що цим методом редіректу часто зловживають спамери. Тому будьте обережні, якщо ви реалізуєте його на загальнодоступному сайті.

У таких випадках рекомендується задати інтервал редіректу більше 8 секунд, щоб запобігти будь-які можливі покарання від пошукових систем.

Редирект 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-адрес з допомогою Apache mod_rewrite

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

Приклад 1: Редирект з www без www

Цей код редіректу HTML перенаправляє всі www-версії URL-адрес на їх еквівалентні версії без www.

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

Це називається канонізацією. Ось кілька приміток про регулярному виразі, що використовується у цьому прикладі:

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

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

Щоб здійснити редирект HTML з поточного домену на новий:

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

Аналогічно можна перенаправляти запити з піддомену поточного сайту на піддомен на новому сайті:

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

Ось кілька приміток про регулярному виразі, що використовується у цьому прикладі:

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

Зверніть увагу: щоб будь-який з цих методів працював коректно, обидва домену повинні мати однакову структуру файлів. Папки і ресурси на поточному домені також повинні існувати і на новому домені. В іншому випадку ви отримаєте на новому домені купу помилок 404.

Приклад 3: Перенаправлення всіх файлів HTML та PHP

Ось ще один, складніший приклад скрипта редіректу HTML mod_rewrite:

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

Ми перенаправляємо всі запити до будь-яких файлів 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.

Переклад статті «How to Redirect URLs» дружною командою проекту Сайтостроение від А до Я.