Посетите Дворцовую площадь

Настройка сервера для работы с региональными поддоменами


Если у вас хостинг

Первым делом напишите Вашему хостеру фразу на примере следующей «Могли бы вы настроить сайт my_site.ru, таким образом, чтобы урлы вида *.my_site.ru указывали на корень my_site.ru" (my_site.ru замените на ваш сайт).
На некоторых хостингах, кстати, можно делать вот так:

Пример настройки динамических поддоменов

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

Дополнительная подготовка сайта для robots.txt

Напишите хостеру "Могли бы вы настроить сайт так, чтобы .txt файлы понимали php?". Это будет необходимо для работы с динамическим robots.txt.
Это опционарный шаг, так как не все сайты могут позволить себе сделать такое, поэтому мы придумали обходные пути для работы с динамическими текстовыми файлами. Подробнее в инструкции по robots.txt

Вы настраиваете сами, у вас apache

Пропишите днс запись:

* IN A IP сервера

А в настройках apache пропишите:

ServerName my_site.ru
ServerAlias *.my_site.ru

Вы настраиваете сами, у вас nginx

Просто добавьте звёздочку (*.my_site.ru) к директиве server_name. Например, вот так:

server {
	listen 80;
	server_name my_site.ru *.my_site.ru;
	root /var/www/my_site.ru/
}

Или если у вас есть редирект с www и https на основном домене:

# Редирект с www http2
server {
   server_name my_site.ru;
   listen 443 ssl http2;
   ssl_certificate /var/lib/acme/live/etc;
   ssl_certificate_key /var/lib/acme/live/etc;

   location {
     // whatever
   }
}

# Редирект с www https
server {
   server_name www.my_site.ru;
   listen 443 ssl https;
   ssl_certificate /var/lib/acme/live/etc;
   ssl_certificate_key /var/lib/acme/live/etc;

   location / {
     return 301 https://my_site.ru;
   }
}

# Редирект с www
server {
   server_name www.my_site.ru my_site.ru;
   listen 80;

   location / {
     return 301 https://my_site.ru;
   }
}

# Оставляем поддомены
server {
   server_name *.my_site.ru;
   listen 80;

   location / {
     // whatever
   }
}

Проверка

В браузере перед my_site.ru пишем (замените my_site.ru на ваш сайт) любой поддомен, допустим, "check", результат должен выглядеть как "check.my_site.ru". Далее переходим на указанную страницу по этому адресу, должна показаться главная страница сайта.

Обратите внимание, что если ваш сайт работает по https, то на главном домене должен остаться https. Если на главном домене обрабатывается наличие www, то это правило также должно сохраниться.



Аристов Василий
Разработчик всех модулей на проекте

Что-то осталось непонятным или вы нашли неточность? Напишите, пожалуйста об этом в комментариях.

Написать комментарий

Чтобы писать комментарии, вам нужно войти на сайт

Авторизоваться через соцсеть

Авторизоваться через vk.com Авторизоваться через facebook.com

Хотите такие же комментарии себе на сайт? Купите готовый к установке модуль