Як налаштувати редирект в Nginx на інший URL? (Nginx URL Redirect)

HTTP-перенаправлення, або редиректи Nginx, - це техніка, яка дає змогу перенаправляти користувачів і браузери з однієї вебадреси на іншу. Її часто застосовують, коли на сайті змінюється структура або домен. Існує кілька типів редиректів, і кожен із них повідомляє браузеру щось своє про зміну.

Два найпоширеніші типи: тимчасові редиректи (HTTP-код стану 302): вони ідеально підходять для ситуацій, коли контент тимчасово переміщено. Наприклад, під час технічного обслуговування ви можете перенаправляти користувачів на тимчасову сторінку з поясненням простою.
Постійні редиректи (HTTP-код стану 301): 

Вони повідомляють браузерам і пошуковим системам, що сторінку переміщено назавжди. Зазвичай їх використовують під час переходу на новий домен або остаточної зміни структури сайту. У цьому гайді розглянемо, як налаштувати обидва типи редиректів у NGINX, і наведемо практичні приклади для типових сценаріїв перенаправлення.

Передумови

Перш ніж почати, переконайтеся, що у вас є:

  • Сервер зі встановленим і правильно налаштованим NGINX для хостингу вашого сайту (сайтів).
  • Якщо вам потрібна допомога з налаштуванням, скористайтеся гайдами для операційних систем, як-от Ubuntu 22.04, Debian або CentOS.

Що таке редирект в Nginx?

У NGINX редирект - це серверна функція, яка перенаправляє вхідні запити з одного URL на інший. Редиректи відіграють важливу роль під час оновлення структури сайту, зміни домену або впровадження єдиного формату URL. NGINX підтримує різні типи редиректів, найчастіше використовуються постійний (301) і тимчасовий (302).

Редиректи можна налаштувати в блоці server NGINX (його також називають віртуальним хостом або файлом vhost). Типові сценарії використання:

  • Перенаправлення HTTP-трафіку на HTTPS для захищених з'єднань
  • Примусове використання версії URL з www або без www
  • Налаштування правил тимчасового або постійного перенаправлення на основі шаблонів URL

Це дає змогу керувати потоком трафіку на ваш сайт і допомагає покращити безпеку, SEO та користувацький досвід.

Як Nginx перенаправляє на інший URL?

NGINX дає змогу легко створювати редиректи за допомогою вбудованої директиви rewrite, яка доступна за замовчуванням. З її допомогою можна задавати як тимчасові, так і постійні редиректи, вказавши шаблон для зіставлення та новий URL призначення.

Приклад 1: тимчасовий редирект певної сторінки

Наведений нижче блок server перенаправляє запити до /old-page на example-site.com на /maintenance.html на тому самому домені:

server {
listen 80;
server_name example-site.com;
location /old-page {
rewrite ^/old-page$ /maintenance.html redirect;
}
}

Так налаштовується тимчасовий (302) редирект, корисний, коли сторінка недоступна протягом короткого часу, наприклад під час технічного обслуговування.

Приклад 2: тимчасовий редирект усього трафіку на інший домен

Щоб перенаправити весь трафік із blog.example.com на archive.example.net зі збереженням шляху запиту:

server {
listen 80;
server_name blog.example.com;
rewrite ^/(.*)$ https://archive.example.net/$1 redirect;
}

Так кожен запит буде надіслано на новий домен із тим самим шляхом, але як тимчасовий редирект.

Приклад 3: постійний редирект з HTTP на HTTPS

Примусово перенаправте весь HTTP-трафік на HTTPS за допомогою редиректу 301:

server {
listen 80;
server_name mysite.org;
return 301 https://$host$request_uri;
}

Це рекомендована практика для покращення безпеки та SEO.

Приклад 4: постійний редирект з версії без www на www

Якщо ви хочете назавжди перенаправити весь трафік з example.org на www.example.org:

server {
listen 80;
server_name example.org;
return 301 http://www.example.org$request_uri;
}

Так користувачі та пошукові системи завжди потраплятимуть на основний домен.

Перенаправлення на новий домен

Під час переходу сайту на новий домен важливо не залишати старий без дії. Без перенаправлення будь-які закладки, зовнішні посилання чи проіндексовані сторінки вестимуть на неробочі URL, що може коштувати вам трафіку та зашкодити SEO.

У цьому розділі розглянемо, як за допомогою NGINX назавжди перенаправити трафік зі старого домену (наприклад, domain1.com) на новий (domain2.com). Оскільки переїзд постійний, ми використаємо редирект 301, щоб пошукові системи та браузери надалі вважали новий домен офіційною адресою.

Припустімо, що в NGINX у вас уже налаштовано два блоки server:

Старий домен: /etc/nginx/sites-available/domain1.com

server {
listen 80;
server_name domain1.com;
# Existing configuration
}

Новий домен: /etc/nginx/sites-available/domain2.com

server {
listen 80;
server_name domain2.com;
# New site setup
}

Застосування редиректу

Тепер потрібно змінити конфігурацію старого домену, щоб весь трафік перенаправлявся на новий домен за допомогою постійного редиректу:

server {
listen 80;
server_name domain1.com;
rewrite ^/(.*)$ https://domain2.com/$1 permanent;
}

У цій конфігурації:

  • Регулярний вираз ^/(.*)$ захоплює все, що йде після кореня (/) у вхідному URL.
  • $1 в URL призначення підставляє захоплений шлях у редирект.
  • Слово permanent наприкінці директиви rewrite вказує NGINX надіслати HTTP-код стану 301, який браузери та пошукові системи сприймають як постійне переміщення.

Наприклад, запит до http://domain1.com/contact.html автоматично перенаправлятиметься на https://domain2.com/contact.html.

Перезавантаження конфігурації Nginx

Після внесення змін не забудьте перевірити та перезавантажити конфігурацію NGINX:

$ sudo nginx -t
$ sudo systemctl reload nginx

Так нове правило перенаправлення стане активним, а всі відвідувачі та пошукові системи коректно потраплятимуть на новий домен.

Висновок

Тепер ви знаєте, як налаштувати редиректи в NGINX. Важливо обрати правильний тип, постійний чи тимчасовий, адже неправильний може вплинути на SEO.

Редиректи Nginx також корисні для примусового використання HTTPS і стандартизації URL (наприклад, додавання www.). За правильного використання вони допомагають зберегти трафік сайту й водночас дають гнучкість у зміні його структури.

Щоб дізнатися більше, зверніться до офіційної документації NGINX, особливо до розділів про модуль rewrite та гайдів з редиректів.

BlueVPS пропонує потужні VPS-сервери з повним root-доступом через RDP, що дає вам повний адміністративний контроль, якщо ви обираєте сервер на Windows. Наші VPS-рішення оснащені високопродуктивними корпоративними SSD, що забезпечує швидке та надійне зберігання даних. 

З BlueVPS масштабування просте: ви можете швидко збільшити ресурси сервера, щойно ваші потреби зростуть, з мінімальним простоєм. Спробуйте гнучкий і надійний VPS-хостинг, адаптований до ваших вимог.

Відкрийте для себе надійний і масштабований VPS-хостинг із повним root-доступом на BlueVPS.

Blog