Генератор редиректів .htaccess
Створіть редиректи 301 і 302 для .htaccess або Nginx, примусовий HTTPS і www, перенесення домену й кінцевий слеш із перевіркою циклів і ланцюжків.
Спершу зробіть резервну копію поточної конфігурації й перевірте з кодом 302, перш ніж перемикатися на 301: браузери кешують постійні редиректи.
Перевірки
Проблем не знайдено.
Як користуватися генератором редиректів .htaccess
- Виберіть Сервер: Apache (.htaccess) або Nginx, а потім Тип редиректу: 301 – постійний або 302 – тимчасовий.
- У полі Редиректи сторінок (по одному в рядку: старий шлях, потім нова URL-адреса) пишіть по одному редиректу в рядок: старий шлях, пробіл і нова адреса, наприклад
/old-page.html /new-page/. Також працюють табуляція, кома або->, а ще можна вставляти повні старі адреси чи наявні рядкиRedirect 301 /a /b. - За бажанням введіть Ваш домен (необов’язково) (наприклад,
example.com), щоб редиректи сторінок вели одразу на кінцеву адресу. - У розділі Канонічна адреса позначте Примусовий HTTPS і виберіть Примусово додати www, Прибрати www або Залишити www без змін. У розділі Кінцевий слеш виберіть, додавати його чи прибирати.
- Якщо весь сайт переїхав, заповніть Перенести весь домен: Старий домен і Нова адреса (абсолютна URL-адреса), і залиште позначеним Зберегти шлях (old.com/page → new.com/page), щоб кожна сторінка потрапляла на свій відповідник.
- Прочитайте Перевірки, потім Копіювати або Завантажити правила. Завантажити приклад показує повну конфігурацію.
Усе відбувається у вашому браузері: нічого з того, що ви вводите, не надсилається на сервер.
Як працюють згенеровані правила
Для Apache інструмент пише правила mod_rewrite, що починаються з єдиного RewriteEngine On. Кожна сторінка стає RewriteRule, шаблон якого починається з ^/?, тож він працює і у файлі .htaccess (де початковий слеш відкидається), і в блоці <VirtualHost>. Крапки, дужки, плюси й інші символи регулярних виразів у ваших шляхах екрануються, а пробіл стає \x20. У новій URL-адресі $ і % екрануються, бо Apache сприйняв би їх як зворотні посилання, а прапорець NE не дає Apache кодувати URL-адресу вдруге.
RewriteRule ніколи не бачить рядка запиту. Коли стара адреса містить його, наприклад /product.php?id=42, інструмент додає рядок RewriteCond %{QUERY_STRING} ^id=42$ і прапорець QSD, щоб старі параметри відкидалися, а не копіювалися на нову сторінку.
Правила впорядковано так, щоб уникати зайвих переходів: спершу перенесення домену, потім редиректи сторінок, потім кінцевий слеш, потім HTTPS і www. HTTPS і www обробляє одне правило, тож http://www.example.com переходить на https://example.com одним редиректом. Коли ваш домен відомий, редиректи сторінок і слеша вже ведуть на кінцеву адресу HTTPS.
Для Nginx HTTPS, www і перенесення домену стають окремими блоками server з return 301, а редиректи сторінок – рядками rewrite, які вставляють у ваш основний блок server. Вони виконуються до зіставлення з location, тож мають пріоритет і над правилом кінцевого слеша. Знак ? наприкінці цільової адреси не дає Nginx додавати старий рядок запиту, коли цього не слід робити.
Які перевірки виконуються
- Сторінка, що перенаправляє сама на себе, або дві сторінки, що перенаправляють одна на одну (цикл, який закінчується повідомленням «забагато перенаправлень»).
- Ланцюжки на кшталт A → B → C: спрямуйте A одразу на C, бо кожен додатковий перехід уповільнює відвідувачів і марнує краулінговий бюджет.
- Та сама стара адреса, вказана двічі, коли діятиме лише перше правило.
- Ціль, яка не є ні абсолютною URL-адресою, ні шляхом, що починається з
/, або ціль ізhttp://чи неправильним www на вашому домені. - Налаштування кінцевого слеша, яке перенаправило б ціль ще раз або повернуло б її на вихідну адресу.
Поширені запитання
Що вибрати: 301 чи 302?
Використовуйте 301, коли перенесення постійне: пошукові системи передають сигнали старої сторінки новій і оновлюють свій індекс. Використовуйте 302 для тимчасових змін, як-от технічні роботи чи коротка кампанія. Браузери кешують редиректи 301, тому спершу перевірте з 302.
Куди покласти файл .htaccess?
У кореневу теку сайту (часто public_html або www), поруч із index.php чи index.html. Завантажений файл називається htaccess.txt; перейменуйте його на .htaccess або вставте правила на початок наявного файлу. Збережіть резервну копію оригіналу.
Чому RewriteRule, а не Redirect 301?
Рядки Redirect походять із mod_alias і виконуються на іншому етапі, ніж RewriteRule. Якщо змішувати обидва в одному файлі, порядок важко передбачити. Використання лише mod_rewrite тримає всі правила в одній передбачуваній послідовності й дає змогу зіставляти рядки запиту.
Мій сайт показує «забагато перенаправлень» після примусового HTTPS. Чому?
За балансувальником навантаження, CDN чи проксі, що завершує HTTPS, Apache бачить кожен запит як звичайний HTTP, тож %{HTTPS} завжди вимкнено. У такому разі перевіряйте перенаправлений заголовок, наприклад RewriteCond %{HTTP:X-Forwarded-Proto} !https, або ввімкніть редирект у CDN.
Чи змінює цей інструмент мій сервер?
Ні. Він лише генерує текст у вашому браузері. Нічого нікуди не надсилається, а ви самі вирішуєте, де і як установити правила.
Схожі інструменти
- Генератор robots.txt Створіть коректний файл robots.txt із групами user-agent, правилами Allow і Disallow, картами сайту й crawl-delay та перевіркою типових помилок.
- Генератор тегів hreflang Створіть теги hreflang для багатомовних сторінок як HTML-теги link, записи XML-карти сайту або HTTP-заголовки Link із перевіркою кодів ISO і взаємних посилань.
- Генератор мета-тегів Безкоштовний генератор мета-тегів: заголовок, мета-опис, канонічний URL, robots і viewport із перевіркою довжини та правильно екранованим HTML.
- Кодування й декодування URL Безкоштовний кодувальник і декодувальник URL. Кодуйте параметри запиту чи повні URL, декодуйте послідовності %XX і обробляйте + як пробіл. Працює в браузері.