Как в ЧПУ на страницах разделов убрать /catalog/?

Здравствуйте!

Переписываем сайт с нуля.
Для СЕО важно что бы url остались теми же как прежде.

По умолчанию в Битриксе ссылка в раздел выглядит так {домен}/catalog/{раздел}/, мне же надо привести к виду {домен}/{раздел}/.

На старом сайте куча костылей, копипастить не вариант. Подскажите как это реализовать?
  • Вопрос задан
  • 2449 просмотров
Решения вопроса 1
@PetrPo
1. Убери из настроек инфоблока "урл страницы инфоблока" /catalog/
2. Открой через публичку настройки компонента (через публичку, чтобы при сохранении urlrewrite сам переписался) в "управление адресами страниц" -> "Каталог ЧПУ (относительно корня сайта)" (SEF_FOLDER) тоже убери catalog, оставь просто /

Если так сделаешь, то урлы станут, как тебе надо, но перестанет корректно работать корень раздела.
Чтобы исправить в index.php пишешь условие
<?if(CSite::InDir('/catalog/index.php')):?>
// здесь будет вызов простого компонента из файла sections.php компонента catalog
<?else:?>
// здесь твой компонент catalog
<?endif;?>


Можешь сначала первую часть сделать, проверить чтобы корректно работали разделы и элементы.

Уточню почему корень каталога будет некорректно работать, так как адрес раздела /код раздела/ и компонент размещен в разделе /catalog/, то Битрикс будет думать, что catalog - это тоже раздел в инфоблоке с символьным кодом catalog, и соответственно раз такого раздела нет, то будет 404, поэтому придется немного делать костыль.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@IvanMogilev
Backend developer: Wordpress,Yii
В настройках инфоблока убрать catalog в полях URL страницы информационного блока,URL страницы раздела,URL страницы детального просмотра,в вызове компонента тоже самое,пересохранить правила обработки,если и получится то так
Ответ написан
<?if(CSite::InDir('/catalog/index.php')):?>
// здесь будет вызов простого компонента из файла sections.php компонента catalog
<?else:?>
// здесь твой компонент catalog
<?endif;?>


Друг , выложи, что у тебя тут
Ответ написан
Комментировать
@rosveb
В настройках ИБ
URL страницы информационного блока: #SITE_DIR#
URL страницы раздела: #SITE_DIR#/#SECTION_CODE_PATH#/
URL страницы детального просмотра:#SITE_DIR#/#ELEMENT_CODE#.html

../catalog/index.php
"SEF_FOLDER" => "/",
"DETAIL_STRICT_SECTION_CHECK" => "N",
"SEF_URL_TEMPLATES" => array(
"sections" => "index.php",
"section" => "#SECTION_CODE_PATH#/",
"element" => "#ELEMENT_CODE#.html",
"compare" => "compare.php?action=#ACTION_CODE#",
"smart_filter" => "#SECTION_CODE_PATH#/filter/#SMART_FILTER_PATH#/apply/",
)

../urlrewrite.php
array (
'CONDITION' => '#^/#',
'RULE' => '',
'ID' => 'bitrix:catalog',
'PATH' => '/catalog/index.php',
'SORT' => 500,
)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы