создание поддоменов при регистрации - PullRequest
5 голосов
/ 21 июля 2009

Я создаю сайт, на котором предприятия смогут зарегистрировать собственную учетную запись, которая должна быть расположена по адресу http://businessname.example.com, при этом «название компании» меняется каждый раз.

Я хочу сделать это на сервере Windows (IIS 7), но не знаю, как это сделать.

Ответы [ 4 ]

5 голосов
/ 21 июля 2009

через http://forums.asp.net/t/874598.aspx

Если у вашего провайдера DNS (например, ISP) есть опция «подстановочный знак», вы можете установить * .mydomain.com -> myIP

Следующий шаг. Опция 1 Создайте скрипт, который создает 1 сайт для каждого субдомена в IIS Вариант № 2 Создайте скрипт url_rewrite, который переписывает URL-адреса для исправления папки на лету.

вариант 2, вероятно, то, что вы ищете (и НАСТОЯТЕЛЬНО рекомендуется и предпочтительнее варианта 1).

больше информации о переписывании URL на iis7: http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

Модуль перезаписи URL-адресов Microsoft для IIS 7.0 предоставляет гибкий механизм переписывания на основе правил>, который можно использовать для выполнения широкого спектра задач по манипулированию URL-адресами, включая, но не ограничиваясь:

  • Включение удобного для пользователя и дружественного для поисковых систем URL с динамическими веб-приложениями;
  • Перезапись URL на основе заголовков HTTP и серверных переменных;
  • Обработка содержимого веб-сайта;
  • Управление доступом к контенту веб-сайта на основе сегментов URL или метаданных запроса.

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

3 голосов
/ 21 июля 2009

Как правило, лучший подход к этому (если это возможно) состоит в том, чтобы не использовать заголовки узлов или отдельные сайты IIS для каждой регистрации. Просто выделите IP-адрес для этого приложения, которое отвечает на все запросы на порту 80 (или на любом другом порту, который вы используете), и позвольте вашему приложению определять заголовок узла по запросу. Таким образом, если у вас 1000 регистраций, вы не получите 1000 «вещей», которые необходимо правильно настроить на уровне ОС / сервисов.

В качестве альтернативы, если вам нужен только код, не знаете, на каком языке вы смотрите, но см. Ниже для C # ...

http://forums.iis.net/t/1151463.aspx

3 голосов
/ 21 июля 2009

Сначала необходимо настроить DNS-сервер для разрешения * .example.com по IP-адресу вашего сервера.

Тогда у вас есть два варианта:

  • Каждый раз, когда создается новая учетная запись, вы добавляете ее хост в конфигурацию IIS, поэтому он привязывается к каталогу. Я не уверен, как это сделать программно.
  • Каждый раз, когда к серверу поступает запрос, вы проверяете хост и перенаправляете клиента на сайт, соответствующий хосту. Это может быть либо явное перенаправление (клиент приходит на http://businessname.domain.com/ и перенаправляется на http://sites.example.com/businessname/), либо неявное (клиент приходит на http://businessname.example.com/ и внутренне, приложение, расположенное на справочник, посвященный бизнесу и обрабатывающий запрос.
0 голосов
/ 21 июля 2009

Это включает в себя:

  • Подстановка DNS-сопоставления
  • Использование IIS API для добавления имен хостов в домен, например, businessname.domain.com
  • Программная олицетворение (поскольку для использования кода IIS API требуется более высокая привилегия, чем просто NETWORK SERVICE

Как только вы программно добавите имя хоста, сопоставление по шаблону позволяет его разрешить.

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

Andrew

...