Почему не меняется урл детальной странице при смене физического пути?
Переименована папка средствами FTP с brands на otdel-prodazh, но детальная ссылка всё равно [https://сайт.рус/brands/abkhaziya/](https://сайт.рус/brands/abkhaziya/) а должна быть [https://сайт.рус/otdel-prodazh,/abkhaziya/](https://сайт.рус/otdel-prodazh,/abkhaziya/)
что было сделано:
-
переименована папка через FTP** 2. в компоненте на странице заменён “SEF_FOLDER” => “/otdel-prodazh/”,
- в настройках инфоблока
URL страницы детального просмотра: #SITE_DIR#otdel-prodazh/#ELEMENT_CODE#/
URL страницы информационного блока: #SITE_DIR#otdel-prodazh/
Канонический URL элемента: #SITE_DIR#otdel-prodazh/#ELEMENT_CODE#/
Очищен кеш кнопкой ВЕСЬ КЕШ**
Битрикс всё равно продолжает настаивать что урлы не менялись и ты сделал всё неверно.
Отличный вопрос! Это очень частая ситуация в Битрикс, когда логика URL не сразу обновляется. Вы сделали правильные шаги, но, скорее всего, проблема кроется в одном из следующих моментов.
Давайте пройдемся по чек-листу от наиболее вероятной причины к наименее вероятной.
-
Кэш (Самая вероятная причина)
Битрикс агрессивно кэширует результаты работы компонентов, включая сгенерированные ссылки
DETAIL_PAGE_URL. Даже если вы изменили все настройки, система может продолжать показывать старые данные из кэша.
** Что делать: **
- **
Полная очистка кэша: **
Зайдите в административную панель: `
Настройки -> Настройки продукта -> Автокэширование `
. На вкладке “Очистка файлов кэша” выберите “Все” и нажмите “Начать”.
- **
Сброс управляемого кэша: **
После первого шага перейдите на страницу `
ваш-сайт.ру/bitrix/admin/cache.php?lang=ru `
и нажмите “Сбросить весь управляемый кеш”.
-
Откройте сайт в режиме инкогнито или с помощью `
Ctrl+F5 `
/ `
Cmd+Shift+R `
, чтобы сбросить и кэш браузера.
** 90% проблем такого рода решаются именно полной очисткой кэша. **
-
Правила обработки URL (
urlrewrite.php)Когда вы используете ЧПУ (SEF_MODE = “Y”), Битрикс создает специальные правила в файле
/urlrewrite.phpв корне сайта. Эти правила говорят системе, какой физический файл должен обрабатывать красивый URL. Возможно, старое правило для/brands/осталось, а новое для/otdel-prodazh/не создалось или создалось некорректно.
** Что делать: **
-
Зайдите в админ-панель: `
Настройки -> Настройки продукта -> Обработка адресов -> Правила обработки `
.
-
Внимательно посмотрите список. Вы должны найти там правило, примерно такого вида:
<li> **
Условие: ** `
#^/otdel-prodazh/# `
- **
Компонент: **
(пусто или ваш компонент)
- **
Файл: ** `
/otdel-prodazh/index.php `
- **
ID: ** `
bitrix:news `
(или ID вашего компонента)
- **
Убедитесь, что нет старого правила для `
#^/brands/# ` **
. Если оно есть — удалите его.
- **
Если нового правила нет: **
Самый простой способ его создать — это открыть страницу `
/otdel-prodazh/ `
в режиме правки, зайти в настройки компонента и **
просто нажать “Сохранить” **
, ничего не меняя. Эта операция заставит компонент переписать свои правила в `
urlrewrite.php `
.
-
Настройки самого компонента (Приоритет)
Настройки URL в инфоблоке имеют ** низший приоритет ** . Главными являются параметры, переданные непосредственно при вызове компонента на странице. Вы указали, что изменили
"SEF_FOLDER" => "/otdel-prodazh/", но нужно проверить и шаблоны путей.
** Что делать: **
-
Откройте в режиме PHP-кода файл, где находится папка, которую вы переименовали (вероятно, `
/otdel-prodazh/index.php `
).
-
Найдите вызов компонента, он выглядит примерно так:
`
`$APPLICATION->IncludeComponent( "bitrix:news", // или другой компонент, например, catalog ".default", Array( // ... другие параметры "SEF_MODE" => "Y", "SEF_FOLDER" => "/otdel-prodazh/", // Вы это уже проверили "SEF_URL_TEMPLATES" => array( "news" => "", "section" => "#SECTION_CODE#/", "detail" => "#ELEMENT_CODE#/", // <-- ВОТ ЭТО КЛЮЧЕВОЙ ПАРАМЕТР! ), // ... другие параметры ) );`
`
</pre>
-
Убедитесь, что в массиве `
"SEF_URL_TEMPLATES" `
в ключе `
"detail" ` **
нет **
старого пути `
brands `
. Там должен быть путь *
относительно * `
SEF_FOLDER `
. Например, `
#ELEMENT_CODE#/ `
или `
item/#ELEMENT_CODE#/ `
. Полный путь `
otdel-prodazh/#ELEMENT_CODE#/ `
здесь указывать **
не нужно **
. Битрикс сам “склеит” `
SEF_FOLDER `
и шаблон из `
SEF_URL_TEMPLATES `
.
План действий по шагам:
- **
Очистите кэш полностью **
(пункт 1). Проверьте результат в инкогнито. Не помогло? Идем дальше.
- **
Зайдите в настройки компонента на странице `
/otdel-prodazh/ ` **
в режиме правки и просто нажмите “Сохранить”. Это должно обновить правила в `
urlrewrite.php `
. Проверьте результат (снова очистив кэш для верности). Не помогло? Идем дальше.
- **
Проверьте файл `
/urlrewrite.php `
вручную **
(пункт 2). Удалите старые правила для `
/brands/ `
, если они там остались. Проверьте.
- **
Проверьте код вызова компонента **
(пункт 3), а именно массив `
SEF_URL_TEMPLATES `
. Убедитесь, что там нет ничего лишнего.
Скорее всего, проблема решится на первом или втором шаге.
