Проблема
В интернет-магазине на WordPress+WooCommerce при использовании плагина "Filter Everything Pro" генерируются так называемые "виртуальные" URL-адреса фильтрации. Пример: /shop/forma-krug/. Такие адреса существуют и открываются, хотя соответствующие им категории товаров отсутствуют. Это приводит к появлению множества дублирующихся или невалидных страниц и снижает эффективность SEO-оптимизации.
Корректное поведение
Страницы с комбинациями фильтров, соответствующие реальным категориям, должны оставаться доступными:
/shop/category-kessony/forma-krug/ - разрешено.
Все остальные URL, которые не соответствуют реальным таксономиям и их комбинациям, должны возвращать HTTP-статус 404 (страница не найдена) или 410 (удалена).
Решение
Требуется:
- Собрать или разобрать массив всех допустимых (валидных) комбинаций параметров фильтрации ($whitelist или массив разрешенных путей).
- На основе этого массива отлавливать все остальные URL-запросы к точкам фильтра.
- При обнаружении неразрешенной комбинации генерировать на сервере заголовок 404-ой (или 410-ой) ошибки.
Технические требования
- Решение должно быть реализовано с помощью PHP (допускаются сниппеты functions.php) или через специальные хуки/фильтры WooCommerce отсутствующие статусы ошибки.
- Недопустима полная блокировка всех URL фильтров - только адресов с некорректным набором таксономий.
- По возможности скорость работы не должна существенно снижаться (например, загрузка большого JSON-файла до авторизации/инициализации страницы должна быть оптимизированной).