Разработка

Смена адреса / смена урла раздела / смена урла детальной страницы

Смена адреса / смена урла раздела / смена урла детальной страницы

Почему не меняется урл детальной странице при смене физического пути?

 Переименована папка средствами FTP с brands на otdel-prodazh, но детальная ссылка всё равно [https://сайт.рус/brands/abkhaziya/](https://сайт.рус/brands/abkhaziya/) а должна быть [https://сайт.рус/otdel-prodazh,/abkhaziya/](https://сайт.рус/otdel-prodazh,/abkhaziya/)


 что было сделано:
  1. переименована папка через FTP** 2. в компоненте на странице заменён “SEF_FOLDER” => “/otdel-prodazh/”,

    1. в настройках инфоблока

    URL страницы детального просмотра: #SITE_DIR#otdel-prodazh/#ELEMENT_CODE#/

    URL страницы информационного блока: #SITE_DIR#otdel-prodazh/

    Канонический URL элемента: #SITE_DIR#otdel-prodazh/#ELEMENT_CODE#/

Очищен кеш кнопкой ВЕСЬ КЕШ**

 Битрикс всё равно продолжает настаивать что урлы не менялись и ты сделал всё неверно.





 Отличный вопрос! Это очень частая ситуация в Битрикс, когда логика URL не сразу обновляется. Вы сделали правильные шаги, но, скорее всего, проблема кроется в одном из следующих моментов.


 Давайте пройдемся по чек-листу от наиболее вероятной причины к наименее вероятной.

  1. Кэш (Самая вероятная причина)

    Битрикс агрессивно кэширует результаты работы компонентов, включая сгенерированные ссылки DETAIL_PAGE_URL . Даже если вы изменили все настройки, система может продолжать показывать старые данные из кэша.

** Что делать: **

-  **
Полная очистка кэша: **
Зайдите в административную панель: `
Настройки -> Настройки продукта -> Автокэширование `
. На вкладке “Очистка файлов кэша” выберите “Все” и нажмите “Начать”.

-  **
Сброс управляемого кэша: **
После первого шага перейдите на страницу `
ваш-сайт.ру/bitrix/admin/cache.php?lang=ru `
и нажмите “Сбросить весь управляемый кеш”.

-
Откройте сайт в режиме инкогнито или с помощью `
Ctrl+F5 `
/ `
Cmd+Shift+R `
, чтобы сбросить и кэш браузера.

** 90% проблем такого рода решаются именно полной очисткой кэша. **


  1. Правила обработки 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 `
.

  1. Настройки самого компонента (Приоритет)

    Настройки 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 `
. Убедитесь, что там нет ничего лишнего.


 Скорее всего, проблема решится на первом или втором шаге.