Определение города (местоположения) по IP 2.0

Поддомены

Настройки DNS и хостинга

В модуле доступен функционал, позволяющий перенаправлять пользователей на поддомен сайта для конкретного города. Вы можете добавлять неограниченное количество поддоменов.

Указывать полностью поддомен, напрмер moskva.bxmaker.ru. Можно указывать не только поддомены но и домены отличные от текущего.

Все описанное тут - только пример, на нашем сайте не используются поддомены, поэтому тестировать на нашем сайте не стоит.

Для реализации задачи, выполните все шаги указанные далее.

Ваш сайт должен открываться с поддоменов, для этого необходимы соответствующие записи DNS, в частности A запись. В пример на картинке ниже IP адрес нашего сервера, в вашем случае будет IP адрес вашего сервера (хостинга).

Пример DNS записей домена для использования поддоменов

На хостинге сайта должна быть включена возможность использования поддоменов, для примера можно указать адрес moskva.bxmaker.ru, при переходе по этому адресу должен отображаться сайт.

Если вы используете домен начинающийся с www, то в правилах .htaccess добавьте строки проверяющие поддомен, в таком случае пользователь обязательно будет либо на www.bxmaker.ru или на соответствующуме региону piter.bxmaker.ru

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^piter\.(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^moskva\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.bxmaker.ru/$1 [R=301,L]

Домены в зоне РФ

Для кирилических поддоменов, необходимо указывать предварительно сконвертировав в Punycode.

Например москва.сайт.ру -> xn--80adxhks.xn--80aswg.xn--p1ag

Перекодировать можно например здесь

Настройка поддоменов

Поддомены на одном сайте

Имеется ввиду что будет использоваться один и тот же сайт битрикса, и не будет переходов между сайтами на одной и тойже копии битрикса.

Для примера будем считать что наш домен domen.loc и он по умолчанию для всех городов, но для Санкт-Петербурга и Калуги нужно чтобы сайт перебрасывал пользователя на поддомены piter.domen.loc и kaluga.domen.loc

Настраиваем сайт и проверяем чтобы он открывался по указанным адресам - domen.loc, piter.domen.loc, kaluga.domen.loc

Настройки / Настройки продукта / Сайты / Список сайтов

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

BXmaker / Определение местоположения по IP 2.0 / Избранные местоположения

Этот список должен быть указан в компоненте bxmaker:geoip.city в шапке сайта (в шаблоне сайта)

Теперь настраиваем переадресацию между доменами, чтобы при выборе пользователем города Калуга он был автоматически переброшен на поддомен kaluga.domen.loc. А при выборе города Москва, Самара или любой другой не из списка был переадресован на домен domen.loc

BXmaker / Определение местоположения по IP 2.0 / Домены

При этом в настройках модуля отключено приоритеты доменов

BXmaker / Определение местоположения по IP 2.0 / Настройки

Таким образом если человек перешел на domen.loc, но по IP адресу удалось определить что он из Калуги, он автоматически будет переадресован на сайт kaluga.domen.loc и наоборот на базовый домен если он не из Калуги.

Город по домену (не ограниченный список)

Этот вариант подходит когда есть заданный набор городов и доменов, но пользователь может указать свой город не из списка. При этом если город соответствует конкретному домену - он будет переадресован на него.

Если город введенный пользователем или определенный автоматически не соответствует ни одному домену, то пользователь будет переадресован на базовый домен.

Если пользователь заходит на конкретный домен, на котором он еще не был, то город будет взят из настроек поддоменв. Например при заходе на kaluga.domemn.loc у пользователя будет выведен город Калуга вне зависимости от реального города. Пользователь при этом может указать любой город.

Если пользователь уже был на этом домене и известно его реальное местоположение в куках или сессии, он будет переброшен на соответствующий домен.

Для этого делаем все настройки как для пункта Поддомены на одном сайте и добавляем следующие настройки

  1. В настройках модуля включаем параметр - "Использовать домен для определения города"

2020-10-25_14-17.png

Город по домену (ограниченный список)

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

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

Для этого делаем все настройки как для пункта Поддомены на одном сайте и добавляем следующие настройки

В настройка модуля включаем параметры - "Домен в приоритете" и "Использовать домен для определения города"

2020-10-25_13-54.png

В настройках компонента вывода города отключаем вывод поиска города, список избраных городов будет выводится по прежнему (его добавляем в пункте поддомена на одном сайте),все это можно сделать в режиме редактирования сайта когда компонент уже размещен на странице

2020-10-25_14-00.png

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

При клике по другому городу из списка, пользователя перебросить на соответствующий домен.

2020-10-25_14-04.png

Поддомены на нескольких сайтах

Этот вариант подходит когда вам нужно сделать все тоже самое что в пунктах выше но не на одном сайте а на нескольких.

В таком случае для каждого сайта делаем свои настройки, например домен piter.domen.loc перенесем на отдельный сайт.

Переходим в Настройки /Настройки продукта / Сайты / Список сайтов

Настройки для доменов - Москва и Калуга

2020-10-25_14-25.png

Для домен - Сантк-Петербург - добавляем новый сайт и указываем там домен для этого города

2020-10-25_14-29.png

Далее добавляем избраные местоположения для примера, для вывода в публичной части и переключения между городами BXmaker / Определение местоположения по IP 2.0 / Избранные местоположения

Этот список должен быть указан в компоненте bxmaker:geoip.city размещеном на страницах сайта или в шаблоне сайта

Теперь настраиваем переадресацию между доменами, чтобы при выборе пользователем города Калуга он был автоматически переброшен на поддомен kaluga.domen.loc. А при выборе города Москва, Самара или любой другой не из списка был переадресован на домен domen.loc

BXmaker / Определение местоположения по IP 2.0 / Домены

Аналогичную настройку копируем для второго сайта, для Санкт-Петербурга

2020-10-25_14-36.png

Сохраняем, и все должно заработать.