Параметры фильтра в URL без ручной склейки
Фильтр работает до первого пробела или амперсанда в поисковом запросе. Склейка строк смешивает данные с разделителями адреса. Передайте кодирование объекту URL.
const url = new URL(window.location.href);
url.searchParams.set("q", "гайки & болты");
url.searchParams.delete("page");
window.location.assign(url.toString());
Остальные параметры сохранятся, а пагинация сбросится. set заменяет все значения одного ключа; для нескольких выбранных категорий понадобятся append и getAll. Сервер всё равно должен проверять значения. Проверьте кириллицу, знак плюса и пустой запрос.