Кращий довідковий документ
Написано й підтримується для брендів та агенцій, які проводять міграцію сайту. Особливо якщо ви невелика команда, якій потрібно, щоб кожна година рахувалася. Цей посібник допоможе вам побудувати стратегію точного виконання 301 переспрямувань, якщо ви мігруєте на Shopify. Зокрема, цей документ стане в пригоді, якщо ви:
- Мігруєте з Wordpress
- Мігруєте з Magento
- Мігруєте з Salesforce
- Мігруєте з Sitecore
- Мігруєте з BigCommerce
- Мігруєте з Webflow
- Мігруєте із саморобного сайту на PHP
Якщо ви беретеся за проєкт зі складними схемами 301 переспрямувань і вам потрібна команда, яка живе саме такою роботою, зв’яжіться з нами.
Логіка переспрямувань URL у Shopify: огляд
Офіційний довідковий документ Shopify про переспрямування URL можна знайти тут. Це стислий документ із загальними настановами, на які може спиратися менеджер магазину Shopify, щоб додати окремі та масові 301 переспрямування. У ньому бракує конкретики про типи URL-адрес, які магазин Shopify підтримує нативно, і цей звіт має заповнити прогалини.
Стисло про висновки щодо функціональності переспрямувань URL у Shopify
- Логіка переспрямувань URL у Shopify дуже надійна.
- У нашому тесті зі 100 різних форматів рядків URL Shopify функціонально підтримав 99 зі 100 типів.
- Нативна система не підтримує символи підстановки для переспрямувань URL.
- Оновлювати наявні шляхи переспрямувань було легко за допомогою інструмента імпорту, якщо дотримуватися недокументованих правил Shopify.
- Існують ліміти на загальну кількість переспрямувань, якими керуватимуть магазини Shopify та ShopifyPlus.
- Існують ліміти на загальну кількість символів у рядку переспрямування URL.
- Ланцюжки 301 переспрямувань створити не можна, і це на щастя. (Виправлено в повторній перевірці 2026 року. Запобіжник перевіряє лише один напрямок.)
- Для URL-адрес із параметрами існує багато винятків і правил.
- Інтерфейс керування переспрямуваннями URL зручний, але йому не завадило б більше деталей.
- Тести не розглядали варіанти переспрямувань, доступні для Hydrogen і Oxygen.
- Ми даємо чинній системі переспрямувань URL у Shopify оцінку корисності 85 %.
Оцінку знижено на 5 % за відсутність підтримки символів підстановки, на 1 % за єдиний тип рядка URL, який вона не підтримала, на 2 % за ліміти довжини URL у символах, на 3 % за дивну поведінку з параметризованими URL-адресами і на 4 % за суттєві деталі керування інформацією, яких бракує в UX переспрямувань.
Тестування проведено 19 червня 2024 року.
Кожне твердження тут перевірено заново на живому магазині Shopify зі стандартним тарифом, через Admin GraphQL API і на реальних запитах до вітрини. Більшість висновків 2024 року витримали. Дев'ять ні, і два з них скасовують те, що ми опублікували: запобіжник від ланцюжків перевіряє один-єдиний напрямок і порядок, у якому ви створюєте записи, вирішує, чи утвориться ланцюжок, а переспрямування на /services спрацьовує, тоді як усе, що під ним, повертає 404.
Висновки 2024 року залишаються на своїх місцях. Кожне виправлення позначене біля твердження, якого воно стосується, щоб кожен, хто діяв за оригіналом, побачив, що змінилося.
Наша методологія тестування переспрямувань
Ми хотіли відповісти своїми тестами на кілька питань, щоб допомогти уникнути пасток у правилах 301 переспрямувань Shopify:
- Яких символів або комбінацій рядків система переспрямувань URL не підтримує?
- Чи є ліміти на довжину рядка URL?
- Чи є максимальна кількість записів для масових імпортів?
- Чи підтримує система переспрямування із символами підстановки?
- Чи є після імпорту автоматичне форматування або перетворення рядків, що змінює вихідні дані?
Для довідки, ось наш повний список URL-адрес, яким ми перевіряли ці різні умови. Тести проводилися на стандартному тарифі Shopify (не ShopifyPlus).
11 висновків на допомогу з переспрямуваннями в Shopify
Shopify не дружить з такими типами рядків URL
Список форматів рядків URL, які Shopify не зміг підтримати, короткий: є лише один тип рядка, який він не зміг прийняти. Рядки із символом крапки з комою після знака рівності, наприклад:
/page?param=;semicolon
Що примітно в цьому рядку: система Shopify перетворює спеціальний символ крапки з комою на URL-кодоване значення, і в таблиці переспрямувань це виглядає так:
/page?param=%3Bsemicolon
Коли ви вводите незакодований рядок URL в адресний рядок браузера, повертається помилка 404.
/page?param=;semicolon
/page?param=%3Bsemicolon
Ця поведінка відрізняється від обробки інших спеціальних символів. Якщо в адресний рядок ввести рядок URL із незакодованими символами, наприклад із правою фігурною дужкою:
/page?param=}
Shopify автоматично закодує її, коли отримає запит, і помилки 404 не буде.
/page%7Drightbrace
Ще один примітний момент: інші варіації рядка URL із незакодованою крапкою з комою проходять валідацію в системі переспрямувань Shopify, наприклад:
/page;semicolon
Дані свідчать, що помилка 404 виникає лише тоді, коли незакодована крапка з комою стоїть після знака рівності.
404 підтверджено, але формулювання про те, що система не змогла прийняти запис, не відповідає дійсності. Shopify приймає запис і зберігає його з крапкою з комою у відсотковому кодуванні як %3b. Розбіжність виникає під час запиту, бо вхідна URL-адреса із сирою крапкою з комою ніколи не збігається із закодованим записом.
Запит на закодовану форму повертає 301 як звичайно. Там, де ви контролюєте вхідні посилання, відсоткове кодування крапки з комою розв'язує це. Там, де сира крапка з комою приходить із зовнішніх посилань, які ви не контролюєте, цей формат не можна переспрямувати надійно.
Shopify не підтримує переспрямування із символами підстановки
Переспрямування із символами підстановки досі в списку побажань багатьох користувачів Shopify. Форуми підтримки завалені запитами на цю функцію. Досі Shopify мовчить про те, де вона стояла б у дорожній карті продукту.
Наразі власникам сайтів, які планують перехід на Shopify, слід розуміти, що нативні Shopify та ShopifyPlus такої можливості не пропонують.
Що таке переспрямування із символами підстановки?
Переспрямування із символами підстановки це різновид переадресації URL, який дає змогу переспрямувати кілька URL-адрес, що відповідають певному шаблону, на одне призначення. Це особливо корисно під час міграції сайту, реорганізації контенту або керування великою кількістю схожих URL-адрес. Замість того щоб налаштовувати окреме переспрямування для кожної URL-адреси, ви використовуєте символ підстановки (зазвичай *), який позначає будь-яку послідовність символів.
Припустімо, ви перебудовуєте свій блог і переносите всі дописи з каталогу /blog/ у /articles/. Замість того щоб налаштовувати окреме переспрямування для кожного допису, можна використати переспрямування із символом підстановки:
From: /blog/*
To: /articles/*
This wildcard redirect will automatically map:
/blog/post1 to /articles/post1
/blog/post2 to /articles/post2
/blog/post3 to /articles/post3
Це спрощує процес переадресації й гарантує, що всі URL-адреси під /blog/ безшовно ведуть на нове місце під /articles/. Станом на дату цієї статті стандартні магазини Shopify та ShopifyPlus не мають такої можливості без підтримки застосунків.
Підтримки символів підстановки досі немає, і повторна перевірка знайшла ту частину, яка коштує людям реального трафіку. Shopify приймає синтаксис із символом підстановки без жодних заперечень. Запис, створений як /old-blog/*, зберігається, з'являється в таблиці переспрямувань і не повідомляє про помилку. Зірочка зберігається як буквальний символ, тож єдина URL-адреса, з якою вона колись збігнеться, це та, що буквально містить зірочку.
Це гірше за пряму відмову, бо ніщо не сигналізує про збій, доки реальний трафік не почне отримувати 404. Розгорніть усі символи підстановки у своїй таблиці переспрямувань у явні шляхи, перш ніж імпортувати її.
Shopify робить усе можливе, щоб не створювати ланцюжки переспрямувань
У таблиці переспрямувань Shopify є непоганий запобіжник, який не дає створювати ланцюжки переспрямувань. Якщо ви спробуєте створити переспрямування на сторінку, яка вже є значенням у полі «Переспрямувати з», ви отримаєте помилку.
У цьому тесті записи URL, які ми намагалися створити, були такими, і це не було дозволено:
/BOTH redirects to /SHORT/SHORT redirects to /homepage
Запобіжник існує, і він вужчий, ніж ми описали. Він перевіряє один напрямок, і під час повторної перевірки повз нього було створено живий ланцюжок із двох переходів.
Shopify відхиляє переспрямування, призначення якого вже є джерелом іншого переспрямування, з Target can't redirect to another redirect. Він відхиляє переспрямування, що вказує саме на себе, з Target can't be the same as path, і блокує прямі двосторонні петлі.
Зворотний напрямок він не перевіряє. Створіть /a на /b, поки за /b нічого немає, а потім створіть /b на /c, і обидва буде прийнято. Shopify ніколи не повертається до першого запису, і тепер у вас живий ланцюжок:
GET /a
301 to /b
301 to /
final: 200, 2 hops
Самий лише порядок створення вирішує, чи утвориться ланцюжок. Масові імпорти застосовують рядки в порядку файлу, а таблиці міграції рідко відсортовані так, щоб цього уникнути, тож на запобіжник розраховувати не варто. Після будь-якого великого імпорту візьміть вибірку своїх переспрямувань і порахуйте переходи:
curl -sIL https://yourstore.com/old-path -o /dev/null -w "hops: %{num_redirects}\n"
Будь-що більше за 1 це ланцюжок.
Що таке ланцюжки переспрямувань?
Ланцюжки переспрямувань виникають, коли одна URL-адреса переспрямовує на іншу, яка своєю чергою переспрямовує ще на одну, утворюючи послідовність, або «ланцюжок», переспрямувань. Це може статися ненавмисно, коли з часом налаштовують кілька переспрямувань без належного контролю.
Ланцюжки переспрямувань проблемні, бо вони можуть уповільнювати завантаження сторінок, шкодити SEO і створювати поганий досвід для користувача. Кожне додаткове переспрямування додає затримку, бо браузер має пройти кожен крок ланцюжка, перш ніж дістатися кінцевого призначення.
Наприклад, якщо у вас налаштовані такі переспрямування:
/old-page redirects to /new-page
/new-page redirects to /latest-page
Коли користувач заходить на /old-page, його спершу переспрямовує на /new-page, а потім одразу знову на /latest-page, і в результаті утворюється ланцюжок переспрямувань.
Нові правила, яких варто дотримуватися, налаштовуючи переспрямування в Shopify
Наше найбільше відкриття в тестах: документація Shopify застаріла. Згідно з Shopify, якщо ви намагаєтеся переспрямувати щось, що починається з цих зарезервованих префіксів, ваші правила переспрямування не буде створено:
/apps
/application
/cart
/carts
/orders
/services
/products
/collections
/collections/all
Ми з’ясували, що це не так.
/apps/application/carts/orders/services/cart/people
Cart був винятком. Сам по собі він зарезервований, а працює, коли за ним іде підкаталог.
/cart/products/collections/collections/all
/cart/people/carts/people/products/people/collections/people
/cart/products/collections/collections/all
Спостереження вище витримують. Пояснення ні, і справжнє правило охоплює значно більше, ніж список із чотирьох префіксів.
Реальний маршрут вітрини завжди перемагає переспрямування. Там, де за URL-адресою справді існує сторінка, Shopify віддає сторінку й ігнорує переспрямування. Запис прийнято, він лежить у вашій таблиці переспрямувань, і він нічого не робить. Ні помилки, ні попередження.
Змінна це не префікс. Змінна це існування маршруту. Переспрямування, поставлене на живу URL-адресу товару, було прийнято й мовчки проігноровано, тоді як ідентичний префікс із хендлом, якого не існує, повернув 301:
/products/ai-skillset-package-001 -> 200, the product page
/products/zz20260727 -> 301, the redirect fires
Тож сприймайте список вище як приклади, а не як правило. Воно охоплює також кожен живий товар, колекцію, сторінку та допис блогу у вашому магазині. Переспрямування на опублікованій URL-адресі товару інертне, доки цей товар не перестане розв'язуватися.
Для міграції це робить послідовність важливою. Спершу зніміть з публікації або видаліть старий ресурс, а потім підтвердіть, що переспрямування спрацьовує. Створіть його, поки сторінка ще жива, і виглядатиме так, ніби нічого не сталося.
/services це виняток, і тут усе працює навпаки. Переспрямування на сам /services повертає 301. Переспрямування на будь-що під ним, наприклад /services/consulting, повертає 404, хоча запис зберігається без жодних заперечень. Це перевіряли повторно чотири рази протягом приблизно 45 секунд, щоб виключити затримку поширення, і запис був присутній увесь час. Кожен інший префікс у цій групі працював із підкаталогами. Імовірна причина в тому, що Shopify маршрутизує /services/* усередині для проксі застосунків і системних ендпоінтів, тож ці запити ніколи не доходять до таблиці переспрямувань, хоча сам механізм ми безпосередньо не перевіряли.
Кожному, хто мігрує сайт із розділом /services/, слід знати, що жодне з тих переспрямувань не спрацює. Перенесіть їх на іншу структуру шляхів або обробіть на рівні DNS чи проксі.
Створювати й оновлювати переспрямування URL у Shopify легко
Створити нове переспрямування в Shopify просто. Користувачам дають два варіанти:
- Створення окремих переспрямувань URL, по одному за раз
- Масове створення переспрямувань через файл CSV, ось найновіший шаблон для цього імпорту.
Додаючи URL-адреси в систему Shopify, користувачі можуть вводити відносні шляхи URL без домену верхнього рівня для джерела (звідки) і абсолютні або відносні шляхи URL для призначення (куди). Приклад:
/example_product.php
Створення окремих переспрямувань URL
Правила переспрямування, які має Shopify, не дозволять вам створити те саме переспрямування URL двічі, коли ви користуєтеся інтерфейсом окремого переспрямування.
Щойно URL-адреса потрапляє до списку в таблиці «Переспрямувати з», при спробі додати її знову ви отримаєте помилку.
Якщо ви хочете оновити окремий запис URL, вам потрібно знайти його в таблиці переспрямувань або скористатися методом масового імпорту. Якщо URL-адреса, яка вже існує, є у файлі масового імпорту, поле «Переспрямувати на» цього запису буде оновлено значенням із файлу CSV.
Наша порада: завжди імпортуйте переспрямування керованими, ефективними партіями. Наприклад, якщо у вас 10 000 переспрямувань URL, імпортуйте по 1 000 за раз і перевіряйте їх, якщо маєте час. Краще ловити помилки в менших наборах даних, ніж полювати на них у більших.
Будьте уважні з масовими переспрямуваннями URL у Shopify
Щоб створити масові переспрямування, заповніть файл CSV заголовками, яких вимагає Shopify, створіть відповідності 1:1 і переконайтеся, що всі URL-адреси відформатовані як відносні шляхи. Якщо ви створите файл з абсолютними шляхами в полі «Переспрямувати з» або «Переспрямувати на», Shopify візьме справу у власні руки. Ось кілька сценаріїв:
https://www.wislr.com/path/to/resource%20with
/path/to/resource%20with
www.wislr.com/unicode/test?value=%E2%9C%93%20co.wislr.com/mix/of%20encoded
/www.wislr.com/unicode/test?value=%E2%9C%93%20/co.wislr.com/mix/of%20encoded
wislr.com/nested/directory/structure?param1=value1
/wislr.com/nested/directory/structure?param1=value1
Висновок: двічі перевірте свій файл імпорту, перш ніж використовувати його. Інакше ви створите правила переспрямування URL, які працюватимуть не так, як вам потрібно.
Якщо запис переспрямування вже є в таблиці й ті самі значення включені у файл імпорту, Shopify оновить запис найсвіжішими даними з файлу імпорту. На нашу думку, це надзвичайно корисно, якщо ви хочете, щоб цей запис оновився. Тим більше причин двічі перевірити дані.
Наша порада: завжди імпортуйте переспрямування керованими, ефективними партіями. Наприклад, якщо у вас 10 000 переспрямувань URL, імпортуйте по 1 000 за раз і перевіряйте їх, якщо маєте час. Краще ловити помилки в менших наборах даних, ніж полювати на них у більших.
Shopify не запроваджує стелі в 1 000 рядків на файл. Один імпорт на 1 051 рядок пройшов без жодної помилки за 48 секунд, що дає приблизно 1 300 рядків за хвилину.
Партії приблизно по 1 000 рядків усе одно розумні, але з іншої причини, ніж жорсткий ліміт. Менші файли ламаються зрозуміліше. Якщо імпорт на 20 000 рядків піде не так, ви матимете значно менше уявлення про те, які рядки це спричинили, ніж якби запустили двадцять файлів і стежили за лічильниками.
Читайте createdCount, updatedCount і failedCount після кожного імпорту. failedCount більший за нуль це єдиний сигнал, який ви отримаєте про те, що рядки було відкинуто.
Описану вище поведінку з дублікатами підтверджено точно так, як написано. Шлях, який уже є в таблиці переспрямувань, отримує перезаписане призначення і потрапляє в updatedCount, зберігаючи свій початковий ідентифікатор запису. Це робить імпорт CSV безпечним для повторного запуску, що справді корисно посеред міграції. Це також означає, що застаріла таблиця тихо перезапише виправлення, які ви зробили вручну після минулого імпорту.
Доручіть нам побудувати карту переспрямувань.
Ми складали карти переспрямувань у понад 100 міграціях, зокрема в переїзді на 27 000 URL-адрес на Shopify Plus. Ми будуємо файл і перевіряємо його на відповідність кожному ліміту з цієї сторінки, перш ніж він піде в імпорт. Після перемикання ми самі читаємо живі відповіді, а не довіряємо тому, що каже таблиця переспрямувань.
Ліміт Shopify на записи переспрямувань URL
Усе хороше має свою межу, і правила переспрямувань Shopify не виняток. Для переспрямувань URL є два пороги.
Тарифи Shopify (не Plus):
Максимум 100 000 переспрямувань URL
Тарифи ShopifyPlus:
Максимум 20 000 000 переспрямувань
Ми не тестували ці ліміти, це було б божевіллям! Це чинні задокументовані характеристики платформи. Тримайте їх на думці, плануючи свої переспрямування, і надавайте пріоритет URL-адресам, найважливішим за трафіком і доходом. Наскільки нам відомо, Shopify не підвищує ці ліміти, попри постійні благання з форумів підтримки.
Ліміт Shopify на кількість символів в URL-адресах
Ось тут із системою переспрямувань Shopify стає гостро. Офіційні настанови Shopify не називають суворих лімітів на символи.
Щоб перевірити ліміти символів URL для переспрямування, ми спершу побудували й спробували імпортувати дуже довгі рядки. Ми почали з URL-адреси завдовжки 2 000 символів, оскільки браузери можуть обробляти запити URI до 2 083 символів. Ось вона, красуня, у всій красі:
/2000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBcccccccccccccccccccccccccccccccccccccccccccccccccccDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Нашим початковим методом було імпортувати URL-адресу на 2 000 символів через шаблон масових переспрямувань, і саме тоді спрацювала сигналізація Shopify. Поріг, який ми офіційно виявили, це ліміт у 1 024 символи для рядків переспрямування URL, включно з префіксом у вигляді скісної риски «/».
- Passed URL-адреса на 300 символів
- Passed URL-адреса на 600 символів
- Passed URL-адреса на 1 000 символів
- Failed URL-адреса на 2 000 символів
Кілька важливих і недокументованих правил переспрямування, які варто розуміти щодо Shopify
Shopify нормалізує літери у ваших рядках URL. Це означає, що незалежно від того, вводите ви велику чи малу літеру, він обслуговуватиме запити URL для цих різних варіантів однаково. Наведені нижче URL-адреси всі вестимуть на одну сторінку, навіть якщо існують окремі записи:
/CASE/TEST.html
/case/test.html
/Case/Test.html
Рядок у нижньому регістрі матиме пріоритет над іншими:
/case/test.html
У наших тестах, хоча існують два унікальні записи «Переспрямувати з» із різними значеннями «Переспрямувати на», для обох записів завжди обслуговуватиметься сторінка /about.html:
#1
/Case/Test.html [redirect to] /homepage
#2
/case/test.html [redirect to] /about.html
Цікаво й потенційно прикро, що Shopify дозволяє вам ввести всі ці унікальні значення в таблицю переспрямувань і обслуговує лише одне з них. Радимо уважно переглянути свої дані, якщо ви відчуваєте, що ваша таксономія URL може підпадати під ці шаблони, перш ніж імпортувати їх у Shopify.
Ви можете використовувати абсолютні шляхи URL для переспрямувань у Shopify
Абсолютні шляхи URL для ваших переспрямувань прийнятні, як показав наш тест, якщо вони стоять у полі «Переспрямувати на». Вони можуть вести на будь-яку URL-адресу, яку забажаєте. Ось приклад, де шлях URL при запиті переспрямовує на профіль LinkedIn:
[Redirect from]
/Case/Test.html
[Redirect to]
https://www.linkedin.com/wislr
Крім того, у полі «Переспрямувати на» Shopify не прибирає домени верхнього рівня, навіть якщо це ваш власний магазин Shopify.
Параметризовані URL-адреси
У наших тестах Shopify зберігав URL-адреси з параметрами, з деякими винятками. Якщо у вас є URL-адреси, проіндексовані з багатьма унікальними параметризованими рядками, то ці унікальні рядки можна додати в таблиці переспрямувань Shopify і спрямувати на унікальні призначення. Ми зробили цей тест із поширеною таксономією для таких URL-адрес, з параметрами UTM. Наприклад:
Цей рядок URL стоїть у полі «Переспрямувати з» таблиці переспрямувань і вів до передбаченого призначення:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google&utm_term=redirects
Ми змінили рядок URL і прибрали останній параметр «&utm_term=redirects», що дало 404:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google
Цю поведінку відтворено в інших тестах з іншими параметрами як значеннями, що підтвердило: Shopify трактує параметризовані URL-адреси як буквальні рядки. Він не скорочує URL-адресу до базової, якщо ви прибираєте параметр з URL-адреси переспрямування, доки ця URL-адреса не існує на сайті Shopify.
Щоб додатково це підтвердити, ми спрямували URL-адресу саму на себе, чого Shopify за замовчуванням не дозволяє. Ви отримали б таке повідомлення:
Цей запис дозволено, коли параметри стоять у полі «Переспрямувати з». Він не становить петлі переспрямування, але, судячи з поведінки в браузері, наш тест показав, що Shopify ігнорує цей запис. Коли запитують URL-адресу з поля «Переспрямувати з», Shopify обслуговує повний параметризований рядок URL, а не кореневу сторінку, як очікується за таблицею:
Цей запис дозволено, але Shopify не додасть параметри до сторінки, яка завантажується, як передбачає правило. Завантажиться лише коренева URL-адреса. Параметри ніколи не додаються до URL-адреси, яка завантажується:
Наше останнє спостереження про URL-адреси з параметрами: у деяких випадках Shopify переписує дані, які ви йому даєте. Так, Shopify переписує дані URL, які ви йому даєте, для деяких параметрів.
Ось приклади, де наші тести знайшли цю закономірність.
Початкові дані переспрямування, які прийняв Shopify:
/test?name=John&Doe
Shopify переписав рядок так, щоб «Doe» став першим атрибутом параметра в рядку:
/test?Doe&name=John
Початкові дані переспрямування, які прийняв Shopify:
/user?name=John&age=30&active=true
Shopify переписав рядок так, щоб параметри стояли в новому порядку:
/user?active=true&age=30&name=John
Тести, які ми провели, свідчать, що Shopify намагається розставити параметри в алфавітному порядку. Ми задумалися, чи це не помилка, адже ми встановили, що Shopify трактує параметризовані URL-адреси як буквальні рядки, тож навіщо підривати це правило переписуванням порядку параметрів. Наразі ви ніколи не отримаєте рядків URL із кількома значеннями параметрів, які збережуть свою структуру. Це може мати великі наслідки для деяких систем керування контентом.
Три виправлення до цього розділу.
Параметри вхідного запиту переносяться до призначення. Початкове формулювання каже, що вони ніколи не додаються до URL-адреси, яка завантажується, і це правда лише для параметризованих шляхів джерела, описаних вище. Там, де шлях джерела переспрямування не несе власних параметрів, до нього дописується все, що приходить у запиті:
GET /old-page -> 301 to /new-page
GET /old-page?utm_source=x -> 301 to /new-page?utm_source=x
Переспрямування не приберуть параметри за вас. Прибирання має відбуватися на рівні над Shopify.
Переписування не лише переставляє, а й переводить у нижній регістр. Розібраний вище приклад зберігає великі літери, а Shopify цього не робить. Шлях, надісланий як /test?name=John&Doe, зберігається як /test?doe&name=john. Значення переводяться в нижній регістр разом із ключами, тож таблиця переспрямувань у порівнянні з вихідною таблицею матиме вигляд, ніби імпорт зіпсував дані.
Зіставлення це не буквальне порівняння рядків. Shopify нормалізує і збережений запис, і вхідний запит, перш ніж порівняти їх, тож регістр і порядок параметрів значення не мають. Проти запису, збереженого як /page?doe&name=john, усі варіанти ?name=John&Doe, ?Doe&name=John і ?name=john&doe повертають 301.
Що справді має значення, так це те, які параметри присутні. Кожен параметр у збереженому шляху має бути в запиті. Приберіть один, і ви отримаєте 404, а не часткове зіставлення, тож початкова теза лишається в силі: параметризоване переспрямування спрацьовує лише для точно такої комбінації параметрів.
UX переспрямувань URL у Shopify потребує оновлення
Під час нашого інтенсивного використання інструмента переспрямувань Shopify ми виявили, що одні елементи цінуємо, а інших бракує.
Ми цінуємо ці функції:
- Кнопки та функціональність масового імпорту переспрямувань
- Фільтрування та швидкий пошук за таксономією URL
- Експорт URL-адрес
- Легкість створення однієї URL-адреси
Ми виявили, що інструменту бракує цих даних і функціональності:
- Загальної кількості імпортованих URL-адрес
- Простішого способу скопіювати й вставити в систему більш ніж одну URL-адресу. Якщо ви додаєте більш ніж одну URL-адресу за раз, вам доводиться користуватися документом імпорту. Один сценарій, де копіювання й вставляння було б корисним, це коли набір URL-адрес має вести на одне й те саме призначення.
Імпортувати швидко, скасувати імпорт ні
Додано з повторної перевірки 27 липня 2026 року.
Створювати переспрямування масово швидко. Видаляти їх масово ні, і розрив достатньо великий, щоб змінити те, як ви плануєте імпорт.
| Операція | Метод | Виміряно |
|---|---|---|
| Створити 1 051 переспрямування | Імпорт CSV, один файл | 48 секунд |
| Видалити 1 051 переспрямування | urlRedirectDelete, по одному |
226 секунд |
Швидкі мутації масового видалення закриті. urlRedirectBulkDeleteBySearch, urlRedirectBulkDeleteByIds і urlRedirectBulkDeleteAll усі вимагають області write_online_store_navigation та активної сесії користувача. Застосунок, який автентифікується через client credentials, а саме так працює більшість міграційних скриптів, не може їх викликати, і йому лишається видаляти по одному запису.
Плануйте свої імпорти так, ніби їх важко відкотити, бо так і є. Спершу перевірте файл на девелоперському магазині або імпортуйте траншами, які ви готові розібрати вручну. Не заливайте файл на 50 000 рядків, який ви не тестували, вважаючи, що зможете швидко його відкотити.
Імпорт CSV і Admin API по-різному поводяться з дублікатами
Додано з повторної перевірки 27 липня 2026 року.
Цей посібник написано навколо процесу з CSV, де дубльований шлях оновлює наявний запис. API робить навпаки:
create /existing-path -> /pages/about
(where /existing-path already redirects to /)
REJECTED: "Path has already been taken"
Кожен, хто переносить процес із CSV на Admin API, має запитати наявний запис і викликати urlRedirectUpdate або видалити й створити заново. Пряме перенесення логіки імпорту зазнає невдачі на кожному шляху, який уже існує.
Як перевірити ваші переспрямування Shopify після запуску
Усе вище описує те, що Shopify прийме. Ніщо з цього не каже вам, чи справді працюють імпортовані переспрямування на живому магазині, а це інше питання. Переспрямування може чисто імпортуватися, з’явитися в адмінці й усе одно не робити того, що ви очікували, щойно на шляху опиниться тема, застосунок або проксі.
Тестуйте ззовні магазину, а не клікаючи в браузері, бо браузер приховує саме те, що вам потрібно побачити: код статусу. Запитайте стару URL-адресу і прочитайте заголовки відповіді.
curl -sIL https://yourstore.example/old-product-url
Прочитайте у виводі три речі:
- Код статусу на першому переході. Вам потрібен
301.302тимчасовий і передає вагу інакше, а це важливо, коли вся суть у постійному переїзді. - Кількість переходів. Кожен рядок
HTTP/у виводі це один перехід. Два або більше означає, що ви побудували ланцюжок, і виправлення полягає в тому, щоб перенаправити початкове джерело на кінцеве призначення, а не лишати проміжний крок на місці. - Кінцевий статус. Останній рядок має бути
200. Переспрямування, яке закінчується на404, гірше за відсутність переспрямування взагалі, бо у вашій таблиці воно виглядає опрацьованим.
Далі перевірте форми, які легко забути. Проведіть ту саму перевірку на URL-адресі з параметром відстеження, щоб підтвердити, що рядок запиту доживає до призначення, на апекс-домені так само як на www, і через звичайний http, а не лише https. Ми перевірили саме це на живому магазині, і параметр дійшов до цілі неушкодженим, але суть у тому, щоб перевірити це на своєму магазині, а не довіряти загальній відповіді, бо тема або застосунок можуть змінити результат.
Одна поведінка, про яку варто знати, перш ніж панікувати: після того як ви зміните або видалите переспрямування, вузол edge Shopify може ще близько тридцяти секунд віддавати стару відповідь, тоді як варіант тієї самої URL-адреси з обходом кешу вже повертає нову. Дайте йому хвилину і перевірте ще раз із дописаним унікальним рядком запиту, перш ніж робити висновок, що переспрямування не спрацювало.
Щодо повної послідовності навколо міграції, а не одного переспрямування, пройдіться чеклістом міграції сайту, який охоплює складання карти, день запуску й спостереження після запуску, у які це вписується.
Підсумок
Система, яку Shopify має для керування 301 переспрямуваннями, добра для більшості бізнесів, але ще не корпоративного рівня. Ми сподіваємося, що з часом вона розвинеться й включить переспрямування із символами підстановки та більше записів переспрямувань для стандартних і Plus тарифів. Можливість користуватися їхньою системою переспрямувань і різноманіття форматів URL, які вона підтримує, змушують нас поставити їм високу оцінку корисності.
Якщо ви беретеся за проєкт зі складними схемами 301 переспрямувань і вам потрібна команда, яка живе саме такою роботою, зв’яжіться з нами.
Часті запитання
Кому має допомогти база знань WISLR про переспрямування URL у Shopify?
Наша база знань передусім допомагає брендам і агенціям, які проводять міграцію сайту на Shopify. Вона особливо цінна для невеликих команд, яким потрібно, щоб кожна година рахувалася, і допомагає клієнтам ефективно зіставити та виконати до 100 000 переспрямувань URL.
Чи є у Shopify офіційний документ підтримки щодо переспрямувань URL?
Так, Shopify підтримує офіційний довідковий документ про переспрямування URL на help.shopify.com. Він дає загальні настанови щодо додавання окремих і масових 301 переспрямувань, а наш посібник доповнює його докладними характеристиками типів URL і обмежень платформи.
Які рядки URL Shopify не підтримує?
У Shopify є лише один непідтримуваний формат рядка URL: рядки з незакодованим символом крапки з комою після знака рівності (наприклад, /page?param=;semicolon). Усі інші формати URL підтримуються, включно із закодованими крапками з комою та крапками з комою в інших позиціях.
Чи підтримує Shopify переспрямування із символами підстановки або регулярними виразами?
Ні, Shopify наразі не підтримує ані переспрямувань із символами підстановки, ані шаблонів регулярних виразів у своїй нативній системі переспрямувань. Це обмеження діє і для стандартних магазинів Shopify, і для магазинів Shopify Plus.
Що таке переспрямування із символами підстановки?
Переспрямування із символами підстановки дають змогу переспрямувати кілька URL-адрес, які відповідають певному шаблону, на одне призначення. Наприклад, переспрямувати всі URL-адреси під /blog/* на /articles/*. Цю функцію часто просять, але в нативній функціональності Shopify її наразі немає.
Чи може Shopify уникати створення ланцюжків переспрямувань?
Так, Shopify має вбудовані запобіжники, які не дають утворитися ланцюжкам переспрямувань. Система не дозволить створити переспрямування на URL-адресу, яку вже переспрямовано кудись інде.
Що таке ланцюжки переспрямувань?
Ланцюжки переспрямувань виникають, коли URL-адреси переспрямовують через кілька кроків, перш ніж дістатися кінцевого призначення (наприклад, A→B→C). Такі ланцюжки можуть уповільнювати завантаження сторінок і шкодити результатам SEO. Система Shopify за своєю будовою допомагає їм запобігати.
Чи легко створювати та оновлювати переспрямування URL у Shopify?
Так, Shopify дає два прості способи: створення окремого переспрямування URL через інтерфейс і масовий імпорт через файл CSV. Обидва способи підтримують відносні та абсолютні шляхи URL.
Як створити масові переспрямування URL у Shopify?
Масові переспрямування можна створити через інструмент імпорту CSV у Shopify. Ми радимо імпортувати партіями по 1 000 рядків, бо так легше перевіряти помилки й керувати процесом. Шаблон для імпорту доступний тут.
Чи є у Shopify максимальний ліміт на записи переспрямувань URL?
Так. Стандартні тарифи Shopify обмежені 100 000 переспрямувань URL, тоді як магазини Shopify Plus можуть тримати до 20 000 000 переспрямувань. Ці ліміти зафіксовані й не підлягають підвищенню.
Чи має Shopify ліміти на кількість символів у переспрямуванні?
Так, Shopify встановлює ліміт у 1 024 символи для рядків переспрямування URL, включно з префіксом у вигляді скісної риски («/»). Довші URL-адреси система не прийме.
Чи існує інструмент для перевірки URL-адрес на сумісність із Shopify?
Офіційного інструмента перевірки Shopify не надає, але наше ґрунтовне тестування показало, що 99 % стандартних форматів URL підтримуються. Головне, про що варто пам’ятати, це ліміт у 1 024 символи та уникання незакодованих крапок з комою після знака рівності.