Валидация URL Smart Filter 1С Битрикс. Аспро
Умный фильтр в Битриксе — один из самых полезных механизмов каталога. Но именно smart.filter часто становится источником двух серьёзных проблем: разрастания кеша и появления бесконечного числа несуществующих URL с одинаковым содержимым. Если ваш каталог отдаёт 200 OK на любые случайные комбинации фильтров — вы теряете SEO-бюджет и убиваете производительность сервера.
В чём проблема: как невалидные URL раздувают всё
В режиме SEF smart.filter формирует ЧПУ-URL вида:
/catalog/plastikovye-konteynery/prop_shirina-from-330/
/catalog/lineynye-svetilniki/prop_dlina-from-2250/
Проблема в том, что такие URL можно генерировать практически неограниченно. Например:
/catalog/plastikovye-konteynery/prop_shirina-from-331/
/catalog/plastikovye-konteynery/prop_shirina-from-332/
/catalog/plastikovye-konteynery/non-existent-value/
/catalog/plastikovye-konteynery/random-garbage-xyz/
Если проект не проверяет валидность URL, он всё равно отвечает 200 OK и показывает либо тот же список товаров, либо рандомную выдачу. В результате — тысячи мусорных страниц, дубли контента и бессмысленная трата краулингового бюджета.
Почему это плохо для SEO
- Дубли контента — одни и те же товары доступны по тысяче разных URL.
- Размывание релевантности — поисковик не понимает, какую страницу считать основной.
- Бессмысленная трата краулингового бюджета — робот индексирует мусор вместо важных страниц.
- Массив низкокачественных страниц — Google не любит сайты с «бесконечными» разделами.
- Каннибализация фильтрованных страниц — URL конкурируют друг с другом.
Почему это плохо для производительности
У производительности тот же корень проблемы. Каждый новый мусорный URL smart.filter:
- инициирует обработку запроса,
- строит фильтр (часто тяжёлый),
- рендерит страницу списка товаров,
- при определённых настройках создаёт отдельный кеш
catalog.section.
В результате — разрастание кеша до десятков гигабайт и падение скорости работы каталога.
📊 Реальный пример с проекта:
До внедрения валидации — более 45 000 URL фильтра с 200 OK (при 2 000 реальных товаров).
После внедрения — только 1 200 валидных URL. Сокращение в 37 раз.
Что мы делаем
Мы добавляем собственную проверку валидности URL smart.filter до построения выдачи каталога. Идея простая:
- если URL не соответствует допустимому формату smart.filter,
- или содержит сегменты, которые не могут быть фильтрующими,
- такой запрос НЕ отдаёт 200 OK,
- вместо этого — честный 404 через штатный механизм Битрикса.
Как это работает технически
Проверка вынесена в отдельный helper, который анализирует хвост URL внутри каталога. Логика в упрощённом виде:
public static function handleCatalogSmartFilterRequest(): void
{
$requestPath = self::getRequestPath();
if (!preg_match('~^/catalog/[^/]+/(.+?)/?$~u', $requestPath, $matches)) {
return;
}
$tail = trim($matches[1], '/');
$segments = self::splitSmartFilterSegments($tail);
if (self::hasSmartFilterHints($segments) && !self::validateSmartFilterSegments($segments)) {
self::processSmartFilter404();
}
}
Для каждого сегмента проверяется соответствие допустимым паттернам (прописанные свойства, цена, бренд, диапазоны). Если URL не проходит проверку — вызывается штатный Tools::process404() с переходом на /404.php.
Почему важно использовать штатную 404 Битрикса
Задача — не просто оборвать выполнение, а сделать это корректно:
- отдать реальный HTTP 404, а не 200 с текстом «не найдено»,
- отрендерить штатную страницу ошибки с дизайном сайта,
- не сломать шаблон и заголовки,
- сохранить предсказуемое поведение для пользователей и роботов.
Именно поэтому мы завязываемся на Tools::process404(..., '/404.php'), а не на ручной die() без окружения.
Что вы получите в итоге
- ✅ Сокращение числа индексируемых URL — только валидные комбинации фильтров
- ✅ Честный 404 на мусорные запросы — без 200 OK для несуществующих страниц
- ✅ Остановку разрастания кеша catalog.section — мусорные URL больше не создают кеш-ключи
- ✅ Улучшение краулингового бюджета — робот тратит время на важные страницы
- ✅ Снижение нагрузки на сервер — меньше бессмысленных запросов
- ✅ Чистую структуру каталога для SEO — без дублей и каннибализации
Как строится работа
- Аудит текущего состояния — бесплатный созвон 15–20 минут, на котором мы смотрим, как сейчас ведёт себя smart.filter на вашем каталоге. Бесплатно.
- Выставление счёта — фиксированная стоимость 50 000 ₽. Никакой почасовой неопределённости.
- Доступы и разработка — вы даёте доступ к серверу и админке. Мы пишем helper, интегрируем проверку в обработку каталога.
- Тестирование — проверяем на тестовом стенде, что валидные URL работают, а мусорные уходят в 404.
- Боевой запуск — после вашего подтверждения выкатываем на прод.
- Анализ результата — смотрим логи и Search Console через 7–14 дней, фиксируем сокращение мусорных URL.
Срок реализации: 2–5 дней — от получения доступов до полноценной работы на боевом сервере.
Для кого эта услуга
- 🛒 Владельцы больших каталогов — от 5 000 товаров и выше. Проблема проявляется тем сильнее, чем больше товаров.
- 📈 Сайты, где важно SEO — если вы замечаете в индексе тысячи странных URL /catalog/.../prop_.../, это точно про вас.
- ⚙️ Проекты с растущим кешем — если папка /bitrix/cache/ раздувается до десятков гигабайт без видимой причины.
- 🔧 Сайты, которые «сломали фильтры» обновлениями — после обновления Битрикса smart.filter начал вести себя непредсказуемо.
Что именно проверяется
Helper анализирует каждый сегмент URL на соответствие допустимым паттернам smart.filter:
brand-is-XXX— значение свойства типа «список»prop_XXX-from-YYY— диапазон «от» по числовому свойствуprop_XXX-to-ZZZ— диапазон «до»prop_XXX-YYY— точное значение множественного свойстваprice-from-XXX— диапазон по ценеprice-to-YYY— диапазон по цене
Если сегмент не соответствует ни одному из допустимых шаблонов — 404.
🎯 Результат после внедрения:
✓ Мусорные URL перестали индексироваться
✓ Размер кеша catalog.section сократился на 60-80%
✓ Краулинговый бюджет стал тратиться на нужные страницы
✓ Search Console перестала показывать тысячи «неиндексируемых страниц»
Частые вопросы
❓ А не сломается ли нормальная работа фильтра?
Нет. Проверка отсекает только заведомо мусорные URL — те, что не соответствуют допустимым шаблонам. Валидные комбинации фильтров работают как обычно.
❓ А как же диапазоны from/to? Их же много.
Именно для диапазонов проверяется, что значение — корректное число. Если подставлена строка или выходящее за пределы значение — 404. Валидные диапазоны проходят.
❓ Будет ли работать после обновления Битрикса?
Да. Мы добавляем свой helper, не правя ядро. Обновления платформы на него не влияют.
❓ А если у меня кастомные свойства фильтра?
Мы добавим ваши паттерны в проверку. Модуль легко расширяется под любую конфигурацию.
❓ Что по гарантии?
После внедрения мы сопровождаем работу в течение 14 дней — отвечаем на вопросы, правим, если что-то пошло не так.
📩 Каталог раздувает тысячи мусорных URL фильтра? Напишите на spb@0ffer.ru со словом «SMARTFILTER». Менеджер 0FFER согласует бесплатный созвон на 20 минут — посмотрим вашу ситуацию, покажем примеры мусорных URL из логов. Через 2–5 дней вы получите чистый каталог без дублей, без раздутого кеша и с корректным 404 на невалидные фильтры.
⚡ 50 000 ₽ — фиксированная цена. Без «доплат за сложность». Без почасовой неопределённости. Валидация smart.filter, которая реально чинит SEO и производительность.
