Несколько доменов указывают на один и тот же веб-сайт

Несколько доменов указывают на один и тот же веб-сайт

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

Я создаю веб-приложение электронной коммерции, которое должно поддерживать несколько доменов. Допустим, у меня есть 2 магазина, работающих в моем приложении, каждый из которых имеет свой собственный домен.

Приложение находится по адресу: www.main-app.com
Магазин 1 находится по адресу: www.store1.com
Магазин 2 находится по адресу:www.store2.com

Мне нужно перенаправить все запросы, сделанные в store1.comи store2.comна main-app.comпередачу идентификатора, который является идентификатором магазина. Идентификатор магазина используется для загрузки всех компонентов каждого магазина.

Мне удалось добавить записи CNAME в store1 и store2, указывающие на www.main-app.com. Пока все хорошо, когда я печатаю www.store1.comв своем браузере, на экране отображается главное приложение, но как мне передать идентификатор магазина, чтобы он знал, какой магазин загружать?

Какой подход будет наилучшим для реализации этой функции?

По сути, я хочу набрать www.store1.comи www.main-app.comполучаю запрос на загрузку store1. Я не хочу использовать переадресацию домена, например, набрав www.store1.comи перенаправив пользователя на что-то вроде www.main-app.com?storeId=1.

Надеюсь, я ясно выразился.

решение1

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

решение2

Любое количество записей может указывать на один и тот же сервер, что заставит сервер получать запросы со всех доменов. Обычно это используется для размещения нескольких доменов с использованием одного веб-сервера. Серверы знают, к чему относится запрос, начиная с HTTP 1.1, который добавил поле в заголовок для запрошенного имени хоста.

На Apache, когда вы размещаете несколько доменов, вы создаете VirtualHost и обычно указываете каждому из них путь к расположению их файлов. Однако для того, что вы описываете, вы бы создали виртуальный хост для каждого магазина, но установили бы для всех их корневых папок один и тот же путь, который будет содержать файлы для вашего основного приложения.

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

Apache может автоматизировать процесс с помощью RewriteRule, для которого требуетсяmod_rewriteустановлен и включен. Что вы делаете, так это говорите ему вызывать страницы с другим параметром в зависимости от запрошенного домена. Например, вы можете сказать ему добавлять storeId к каждому запросу, как вы предложили, и использовать этот storeId для управления логикой. Другие веб-серверы, вероятно, имеют что-то эквивалентное, я просто использую Apache, чтобы описать это, поскольку это тот, который я знаю лучше всего.

Связанный контент