Кратко — проблема почти всегда не в компоненте поиска, а в том, как настроен индексатор: он либо не «видит» ваши страницы (не может к ним обратиться), либо эти страницы исключены из областей/масок индексатора. Ниже — пошаговая инструкция, что проверить и исправить.
1) Правильные настройки индексатора (в админке)
- Откройте настройки модуля Поиск: /bitrix/admin/settings.php?mid=search&lang=ru (или: Настройки → Настройки продукта → Поиск).
- Далее — страница «Индексация сайта» или /bitrix/admin/search_index.php. Для каждого сайта укажите:
- Корректный протокол (http/https) и хост (домен без «/»).
- Порт, если нестандартный.
- Пути, которые индексировать (например «/» или конкретные папки).
- Маски исключения/включения (убедитесь, что не исключены ваши папки и index.php).
- Разрешённые расширения файлов (.php, .html, .htm и т.д.).
2) Проверка доступа индексатора к сайту (частая причина)
- Индексатор обращается к сайту по HTTP как к внешнему ресурсу. Проверьте с сервера:
- curl -I http(s)://ваш-домен/page-one/ — должна быть HTTP 200.
- curl http(s)://ваш-домен/page-one/ | head — убедитесь, что в ответе виден HTML с текстом.
- Если эти запросы возвращают 301/302/403/500 или пустую страницу — индексатор не сможет.
- Частые причины: сайт требует авторизации, стоит .htaccess с запретом, сервер не резолвит свой домен (DNS), firewall блокирует loopback. Решения: сделать страницы общедоступными для индексатора, настроить hosts чтобы домен резолвился локально, при необходимости указать логин/пароль в настройках индексатора.
3) Запустите переиндексацию вручную и смотрите лог
- В админке на странице индексирования нажмите «Переиндексация» / «Начать индексирование».
- После выполнения просмотрите логи/сообщения об ошибках на странице индексирования — там видно, какие URL обработаны, какие ошибки были (403, 404, timeouts).
- Можно также смотреть таблицу b_search_content в БД: SELECT URL, SITE_ID, CONTENT FROM b_search_content WHERE URL LIKE '%page-one%';
4) Проверьте содержимое страниц
- Убедитесь, что основной текст действительно присутствует в HTML (не рисован картинками).
- Уберите/не используйте мета-теги noindex или тег <noindex> (если он есть в шаблоне).
- Если текст подгружается через AJAX после загрузки страницы — индексатор этот текст не увидит. Нужно, чтобы основной текст был в окончательном HTML.
5) Настройки компонента поиска на сайте
- На странице результатов (bitrix:search.page) в параметрах области поиска должна быть отмечена «Статические файлы» (Static files) и выбран правильный site_id (если у вас мультисайт).
- Если вы используете фильтры/ограничения по SITE_ID или по разделам — проверьте их.
6) Специальные случаи
- HTTPS и самоподписанные сертификаты: если сайт на https с проблемным сертификатом, индексатор может не пройти. Укажите https и, при необходимости, исправьте сертификат.
- Composite/сaching: редко, но может влиять. Временно отключите composite при индексировании для проверки.
- Если сервер не может обращаться к себе через внешний IP — добавьте в /etc/hosts маппинг домена на 127.0.0.1 или локальный IP.
7) Если всё проверили, но не индексируется
- Посмотрите список проиндексированных URL в админке — может быть, страницы проиндексированы под другим URL (без trailing slash, с index.php и т.п.).
- Выполните простую тест-страницу /test-page.html с явным текстом «тест» доступную снаружи и повторно индексируйте — проверите, индексируется ли вообще что-то.
- Можно вручную добавить или обновить запись в индексе через API: CSearch::Index("s1", "/path/to/page.php", $text) — но это костыль, лучше настроить автоматический индексатор.
Если хотите, могу помочь конкретнее — пришлите:
- URL одной проблемной страницы,
- результаты curl с сервера (curl -I и curl ... | head),
- скрин/текст ошибок, которые показывает страница индексирования в админке,
- настройки индексирования (какие пути/маски указаны).