**TL;DR.** SEO для PLP має три правила. (1) Встановити канонічну URL для базової категорії та дозволити конкретні комбінації фільтрів, які відповідають реальним запитам. (2) Не індексувати випадкові комбінації фасет і результати пошуку, щоб контролювати бюджет обходу. (3) Відображати на сервері та виводити схему CollectionPage. Шаблон "благословленої фасети" є стратегічним важелем для захоплення запитів з довгим хвостом.

## Чому SEO категорій важливе

Сторінки категорій захоплюють запити з найвищим комерційним наміром:

- "шкіряні сумки" (1.2M щомісячних пошукових запитів у Google по всьому світу)
- "коричнева шкіряна сумка-посланець" (40k щомісячних)
- "веганська шкіряна сумка для ноутбука для жінок" (8k щомісячних)

Кожен з цих запитів має форму категорії. Рейтинг правильного URL для кожного з них є різницею між трафіком середньої та верхньої частини воронки.

## Ієрархія URL

Рекомендована структура:

```
/categories/leather-bags                       (батьківська)
/categories/leather-bags/messenger             (дочірня)
/categories/leather-bags/messenger/work        (внучка — тільки якщо необхідно)
```

Або з префіксом локалі:

```
/en/categories/leather-bags
/de/categorien/leder-taschen
```

Обмежте глибину до 3 рівнів. За межами цього навігація стає крихкою, а рівень посилань розмивається.

## Проблема фасетної навігації

Типовий PLP має:

- 5 фільтрів кольору
- 4 фільтри розміру
- 8 фільтрів цінового діапазону
- 3 порядки сортування
- N сторінок пагінації

Комбінації: 5 × 4 × 8 × 3 × N = 480N URL на категорію. З 50 категоріями у вас буде 24,000N URL лише з комбінацій фасет. Бюджет обходу знищено.

Виправлення:

| Шаблон URL                                         | Рішення щодо індексації         |
| --------------------------------------------------- | ------------------------- |
| `/categories/leather-bags`                            | Індексувати                     |
| `/categories/leather-bags?page=2`                     | Індексувати, самоканонічний     |
| `/categories/leather-bags?sort=price-asc`              | **Канонічний до бази** + noindex |
| `/categories/leather-bags?color=brown`                 | Залежить — див. "благословлені фасети" |
| `/categories/leather-bags?color=brown&size=m`           | Канонічний до бази + noindex |
| `/search?q=leather+bag`                                | **Noindex** завжди        |

## Благословлені фасети

Деякі комбінації фільтрів відповідають реальним пошуковим запитам, які вводять користувачі. Вони заслуговують на свій власний індексований URL.

Як вирішити, що благословити:

1. **Дані запитів з натовпу**: Google Search Console → Звіт про запити. Фільтруйте за сторінкою категорії. Шукайте запити, які вказують на конкретну фасету ("коричнева шкіряна сумка", "мала шкіряна сумка").
2. **Дані обсягу пошуку**: Інструменти для ключових слів підтверджують, що "коричнева шкіряна сумка" шукається. "Вінтажна зношена шкіряна сумка розміру середній між $80 і $120" — ні.
3. **Дані конверсії**: які комбінації фільтрів призводять до покупок? Комбінації з високою конверсією з обсягом пошуку є благословленими кандидатами.

Впровадження благословленої фасети:

```ts
// Псевдокод
interface BlessedFacet {
  facet: { name: string; value: string }; // наприклад, { name: "color", value: "brown" }
  category: string; // наприклад, "leather-bags"
  seoTitleTemplate: string; // наприклад, "Коричневі шкіряні сумки — колекція {brand}"
  seoDescription: string;
  ogImageUrl?: string;
  noIndex?: boolean; // перевага
}
```

Для благословленої фасети відображайте за чистим URL з оптимізованими метаданими:

```
URL:     /categories/leather-bags/color-brown
Title:   Коричневі шкіряні сумки | Acme Leather Goods
Meta:    Відкрийте нашу колекцію коричневих шкіряних сумок — виготовлених вручну з повнозернистої шкіри. Безкоштовна доставка на замовлення понад $50.
Canonical: self
Index: yes
```

Неблагословлені комбінації (наприклад, color=brown + size=medium + sort=price-asc):

```
URL:     /categories/leather-bags?color=brown&size=medium&sort=price-asc
Title:   Шкіряні сумки | Acme Leather Goods  (повернення до бази)
Canonical: /categories/leather-bags
Index: no
```

## URL запитів пошуку

Результати пошуку майже завжди:

- Відповідають багатьом подібним URL.
- Мають низьку якість вмісту (просто список продуктів).
- Є дуже змінними (кожна помилка створює новий URL).

Не індексуйте їх:

```html
<meta name="robots" content="noindex, follow" />
```

`follow`, тому що внутрішні посилання з пошукових сторінок все ще передають рівень.

## Пагінація

Найкраща практика 2026 року:

- Кожна сторінка (сторінка 2, 3, ...) самоканонічна.
- `rel="next"` і `rel="prev"` застаріли, але все ще розглядаються як підказки — виводьте їх, якщо це просто.
- Весь вміст кожної сторінки повинен бути відображений на сервері.
- Загальна кількість результатів і поточна сторінка видимі в H1 або над згином для ясності користувача.

```html
<head>
  <link rel="canonical" href="https://example.com/categories/leather-bags?page=2" />
  <link rel="prev" href="https://example.com/categories/leather-bags" />
  <link rel="next" href="https://example.com/categories/leather-bags?page=3" />
</head>
```

## Відображення на сервері

Сторінки категорій повинні відображати свій вміст на сервері. Клієнтські PLP на React, де ви отримуєте продукти в `useEffect`, отримують майже порожню HTML-відповідь від краулера Google.

Використовуйте компоненти сервера Next.js (або еквівалентну SSR/SSG фреймворку) для сітки продуктів. Пагінація, сортування та фільтри можуть бути межами Suspense, які транслюються після статичної оболонки.

## Схема CollectionPage

Обгорніть PLP в `CollectionPage` з вбудованим `ItemList`:

```json
{
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  "name": "Шкіряні сумки",
  "description": "Перегляньте нашу колекцію ручних шкіряних сумок.",
  "url": "https://example.com/categories/leather-bags",
  "mainEntity": {
    "@type": "ItemList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "url": "https://example.com/products/brown-messenger-bag"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "url": "https://example.com/products/black-leather-tote"
      }
    ]
  },
  "breadcrumb": {
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Головна", "item": "https://example.com" },
      { "@type": "ListItem", "position": 2, "name": "Категорії", "item": "https://example.com/categories" },
      { "@type": "ListItem", "position": 3, "name": "Шкіряні сумки", "item": "https://example.com/categories/leather-bags" }
    ]
  }
}
```

Для благословлених URL фасет також виводьте `CollectionPage` з фасетним специфічним заголовком/описом та `ItemList` відфільтрованих продуктів.

## Заголовок і опис для кожної благословленої фасети

Заголовки та описи — це те, як благословлені фасети виграють свої запити.

Базова категорія:

```
<title>Шкіряні сумки | Acme — Ручна робота з італійської шкіри</title>
<meta name="description" content="Перегляньте нашу колекцію ручних шкіряних сумок з Італії. Матеріали з повнозернистої шкіри, міцна латунна фурнітура, безкоштовна доставка при замовленні понад $50.">
```

Благословлена фасета (color=brown):

```
<title>Коричневі шкіряні сумки | Acme — Ручна робота з італійської шкіри</title>
<meta name="description" content="Відкрийте для себе ручні коричневі шкіряні сумки з Італії. Матеріали з повнозернистої шкіри, міцна латунна фурнітура, безкоштовна доставка при замовленні понад $50.">
```

Благословлена фасета (color=brown + style=messenger):

```
<title>Коричневі шкіряні сумки-посланці | Acme</title>
<meta name="description" content="Перегляньте нашу колекцію коричневих шкіряних сумок-посланців. Виготовлені вручну в Італії з повнозернистої шкіри та міцної латунної фурнітури. Безкоштовна доставка при замовленні понад $50.">
```

## Як Ordiko обробляє SEO категорій

- Шаблон URL `/categories/{slug}` з підтримкою ієрархії.
- Таблиця `BlessedFacet` для кожного магазину: фасета, категорія, переопределення SEO шаблонів.
- Благословлені фасети відображаються за чистими URL (`/categories/leather-bags/color-brown`); неблагословлені канонічні до бази з noindex.
- Сторінки запитів пошуку автоматично не індексуються.
- Пагінація самоканонічна.
- Схема CollectionPage + ItemList + Breadcrumb на кожному PLP.
- Відображення на сервері з компонентами сервера React.

## FAQ

**Чи слід мені повністю не індексувати фасетні URL?**
Не індексуйте неблагословлені комбінації (випадкові фільтри + комбінації сортування). Дозвольте індексацію базової категорії та білих списків "благословлених" фасет, які відповідають реальним пошуковим запитам. Білий список є стратегічним важелем — це те, як "шкіряні сумки", "коричневі шкіряні сумки", "коричневі шкіряні сумки-посланці" отримують можливість ранжування.

**Як я можу вирішити, які фасети благословити?**
Перехрестіть значення ваших фільтрів з даними запитів пошуку (Google Search Console + ваші власні журнали пошуку + інструменти для ключових слів). Значення фільтрів, які відповідають реальним запитам, стають благословленими. Випадкові комбінації значень залишаються noindex.

**Що щодо комбінацій кольору + розміру + ціни?**
Ці комбінації є складними. 'коричнева шкіряна сумка' є пошуковою; 'коричнева шкіряна сумка розміру середній до $200' — ні. Благословляйте комбінації з одного атрибута та двох атрибутів максимум; не індексуйте комбінації з 3+ атрибутами.

**Як Ordiko обробляє фасети?**
Налаштування SEO Ordiko відкривають масив blessedFacets для кожного магазину. Кожен запис вказує на фасету (наприклад, color=brown), її SEO шаблон (заголовок, опис, переопределення OG зображення) і виводить чистий URL, наприклад, /categories/leather-bags/color-brown, який індексується. Інші комбінації автоматично не індексуються.