Что делает
Эта связка отвечает за корректные правила ЧПУ (urlrewrite) на сайте:
prepare.urlrewrite— “нормализует” существующие правила (в вашей формулировке: перенос/перевод правил из папки в корень, а по реализации — встречается логика упрощения префикса каталога сайта вCONDITION).urlrewrite.add— добавляет правила из отдельного файла (где лежит массив$arUrlRewrite) в системный/urlrewrite.phpчерез API Bitrix.
Это обычно выполняется ближе к финалу мастера, когда:
- сайт выбран,
- файлы разложены,
- нужный файл с правилами уже лежит на месте.
Какие данные ждёт
urlrewrite.add ожидает параметр:
source— путь к PHP-файлу с массивом$arUrlRewrite
Файл-источник обычно выглядит так:
<?php
$arUrlRewrite = [
[
'CONDITION' => '#^/some/path/#',
'RULE' => '',
'ID' => '',
'PATH' => '/some/path/index.php',
'SORT' => 100,
],
];
Пример связки шагов
<?php
declare(strict_types=1);
use SIMAI\Wizard;
return [
[
'name' => 'Подготовка urlrewrite',
'code' => 'prepare.urlrewrite',
'autocomplete' => 'Y',
],
[
'name' => 'Добавление правил ЧПУ',
'code' => 'urlrewrite.add',
'autocomplete' => 'Y',
'parameter' => [
'source' => Wizard::getLocal(__DIR__) . '/data/urlrewrite/urlrewrite.rules.php',
],
],
];
Где хранить файл правил в пакете решения
Удобный вариант (и самый читаемый в документации решения) — держать файл правил внутри данных мастера:
<wizard_dir>/data/urlrewrite/urlrewrite.rules.php
Тогда мастер переносим между окружениями без “магии”.
Что проверить (smoke-check)
- Файл
sourceдействительно возвращает корректный$arUrlRewriteи доступен на чтение. - После выполнения шага новые правила появились в
/urlrewrite.phpи реально работают (быстрый тест — открыть один URL, который должен сработать по правилу). - При повторном запуске мастера правила не дублируются (или дублируются предсказуемо — зависит от логики
urlrewrite.add).