Рассмотрим задачу создания мультирегиональности на нескольких доменах/поддомендах и поддиректориях
Есть 2 домена, 1 поддомен, 1 поддиректория
www.site.ru - для основного региона, используемого по умолчаниюsohi.site.ru - отдельный регион для Сочиwww.site.ru/tula/ - отдельный регион для Тулыpiter.ru - отдельный регион для Санкт-ПетербургаIP адрес сервера - 178.154.224.133
В данном случае используется основной основной домен 3-го уровня, то есть www.site.ru и домены регионов тоже 3го уровня, например sohi.site.ru
В этом случае как для авторизованных так и не авторизованных пользователей сесcия будет единой на
Для piter.ru - будет таже сессия только для авторизованных пользователей, для не авторизованных сессия будет иная.
Настройки DNS будут содержать как минимум такие записи
site.ru:
| Тип | Хост | Значение |
|---|---|---|
| A | @ | 178.154.224.133 |
| A | www | 178.154.224.133 |
| A | sohi | 178.154.224.133 |
piter.ru:
| Тип | Хост | Значение |
|---|---|---|
| A | @ | 178.154.224.133 |
Теперь необходимо настроить параметры сайта в битриксе. Переходим на на страницу со списком сайтов, в меню строки с нужным сайтов нажмите на пункт - Изменить
Рабочий стол / Настройки / Настройки продукта / Сайты / Список сайтов
/bitrix/admin/site_admin.php?lang=ru

В форме заполните поля
Доменное имяURL сервераE-Mail адрес по умолчаниюУказать нужно
site.ruиpiter.ru, такая запись подразумевает и поддомены. Это важно для доступности сессии пользователя между поддоменами.
В идеале должно получиться примерно как на картинке ниже.

Сохраните изменения.
В настройках главного модуля необходимо включить

Чтобы сайт всегда работал на https протоколе, и ссылки формировались с защищеным протоколом, необходимо включить это. Для это проверяем чтобы в файле /bitrix/.settings.php была запись
<?php
return array (
//какие то записи
"https_request" => array(
"value" => true
),
);
?>
Если нету - нужно добавить

В файл .htaccess в корне сайта добавьте строки проверяющие поддомен. В таком случае пользователь обязательно будет либо на www.site.ru либо соответствующему региону sohi.site.ru
RewriteCond %{HTTP_HOST} !^www.site.ru [NC]
RewriteCond %{HTTP_HOST} !^sohi.site.ru [NC]
RewriteCond %{HTTP_HOST} !^piter.ru [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
Важно указывать именно !^www.site.ru, а не !^www.site.ru$, так как иногда хост может передаваться как www.site.ru:80, в результате могут быть ошибки при работе сайта и лишние редиректы, в том числе цикличные
Домены в зоне .рф должны быть сконвертированы в Punycode.
Например сочи.сайт.рф -> xn--h1aliz.xn--80aswg.xn--p1ai
Перекодировать можно например здесь
Настало время настроить регионы. Переходим на страницу списка регионов и добавляем новые.
Рабочий стол / BXmaker / GeoIP 4.0 / Региональность / Регионы
/bitrix/admin/bxmaker.geoip_region_list.php?lang=ru

Далее заполняем каждый регион исходя из задачи.
В первую очередь добавляем регион используемый по умолчанию для всех местоположений, который будет использоваться с основным доменом www.site.ru. Нужно заполнить, как минимум, эти поля:
Активность - ДаИспользовать по умолчанию - ДаНазвание - Любое названиеОсновное местоположение - МоскваДомен - в текущем случае это будет www.site.ru
Для регионов без дирректорий заполнение такое же. За исключением того, что поле
Использовать по умолчанию - НетПрефикс директории - должно быть пусто. 
Регионы с поддиректриями имеют важное отличие. Для такого региона в корне сайта должна быть папка с соответствующим название - tula. Внутри должна быть точно такая же структура как и в корне сайта.
Когда пользователь находясь в каталоге сменит свое местоположение на Тулу, произойдет редирект на туже страницу, только в пути добавится поддиректория:
Если структура будет отличаться и не будет настроенной верно, вполне вероятно, что после смены города пользователь увидит 404 ошибку.

В остальном настройки похожие

Если вам необходимо выводить разные цены и/или склады в каталоге, тогда нужно сделать следующее:
Отредактируем файлы - /catalog/index.php и /tula/catalog/index.php и добавим в конце списка параметров вызова компонента переопределение на свои значения
"PRICE_CODE" => (array)\BXmaker\GeoIP\Manager::getInstance()->getPosition()?->getRegion()?->getPriceCodes(),
"STORES" => (array)\BXmaker\GeoIP\Manager::getInstance()->getPosition()?->getRegion()?->getStores(),
"LIST_PROPERTY_CODE" => array(
0 => "NEWPRODUCT",
1 => "SALELEADER",
2 => "SPECIALOFFER",
3 => "REGION_ID_". \BXmaker\GeoIP\Manager::getInstance()->getPosition()?->getRegion()?->getId(),
),
"DETAIL_PROPERTY_CODE" => array(
0 => "NEWPRODUCT",
1 => "MANUFACTURER",
2 => "MATERIAL",
3 => "REGION_ID_". \BXmaker\GeoIP\Manager::getInstance()->getPosition()?->getRegion()?->getId(),
),

В итоге должно получиться примерно следующее
