Короткий ответ
Это не «магия» самого параметра Set title — 404 появляется потому, что при смене этого параметра нарушается одна из проверок/правил на вашем сайте (SEF-маршрутизация, кастомный шаблон компонента или дополнительный код, который выставляет 404 в зависимости от заголовка/параметров). Чаще всего виноват не core битрикса, а либо правила rewrite, либо собственный код шаблона/сайта, который ориентируется на заголовок страницы или на параметры компонента.
Что проверить и как исправить (пошагово)
1) Отключите кэш и проверьте повторно
- Очистите кэш компонента и сайта (включая композитный кэш, если есть). Часто поведение связано с кешированием старых параметров.
2) Посмотрите, откуда выставляется 404
- Поиск по проекту: ищите в коде «SetStatus("404")», «Show404», «CHTTP::SetStatus», «ERROR_404», «IncludeFile("404.php")» и т.п.
- Проверьте шаблон сайта (header.php, footer.php), шаблон компонента bitrix:news и файлы epilog/logic — возможно, где‑то стоит проверка вида if(!$APPLICATION->GetTitle()) CHTTP::SetStatus("404").
3) Проверьте кастомные шаблоны компонента
- Если вы используете не дефолтный шаблон news — сравните файл detail.php/section.php шаблона. Часто авторы шаблонов добавляют условия по $arParams['SET_TITLE'] или по $APPLICATION->GetTitle(), и при смене параметра логика меняется и выставляется 404.
- Временно замените шаблон на стандартный и проверьте, исчезнет ли 404.
4) Проверьте SEF-настройки компонента и URL-параметры
- Включён ли у вас SEF? Правильна ли «Папка компонента» и шаблоны адресов (list, detail, section)? Неправильная SEF‑папка/шаблон при изменении параметров иногда вызывает неверную обработку URL.
- Включите отладку: в шаблоне выведите (в лог файл) $arResult['VARIABLES'] и $componentPage, чтобы убедиться, что компонент правильно распознал страницу (detail/section/list).
5) Проверьте правила rewrite (.htaccess или nginx)
- Правила должны перенаправлять только несуществующие файлы/папки на index.php. Правильный пример для Apache:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L,QSA]
- Неправильные правила, которые добавляют GET-параметры или ломают REQUEST_URI, могут привести к тому, что компонент не найдёт соответствующий элемент и выставит 404. Сравните рабочий и проблемный урл через $_SERVER['REQUEST_URI'] и $_SERVER['QUERY_STRING'].
6) Проверьте параметры компонента, связанные с 404
- SET_STATUS_404, SHOW_404, FILE_404 — убедитесь, что они настроены корректно. Возможно, при изменении SET_TITLE поменялось условие внутри шаблона, и включился SET_STATUS_404.
7) Логирование стека, который выставляет 404
- Временно добавьте в header.php перед выводом страницы:
if(http_response_code()==404){ file_put_contents($_SERVER['DOCUMENT_ROOT'].'/404_log.txt', print_r(debug_backtrace(),1), FILE_APPEND);}
— это покажет, какой код и откуда вызвал установку 404.
Типичные реальные причины, которые встречаются чаще всего
- Кастомный шаблон проверяет $APPLICATION->GetTitle() или $arParams['SET_TITLE'] и при «неправильном» значении считает страницу несуществующей.
- SEF‑маска/папка компонента указана неверно: при изменении параметра компонент стал генерировать другой title/адрес, а rewrite отдаёт «пустой» обработчик.
- Неправильные правила .htaccess/nginx, которые ломают REQUEST_URI/QUERY_STRING (особенно если в правилe добавляли параметры типо /index.php?route=$1).
- Кеширование (получается старая версия страницы с 404).
Если хотите — могу помочь точнее
Если пришлёте:
- конфигурацию компонента (все параметры bitrix:news),
- используемый SEF-путь и шаблоны URL,
- ваш .htaccess (или nginx-конфигурацию),
- фрагменты кастомного шаблона detail.php/section.php (если есть),
— я просмотрю и укажу точную причину и правку.