Поддомены подстановочных знаков в IIS7. Можно ли сделать их такими, как в Apache?
Можно ли настроить IIS7 для достижения той же функциональности, что и Apache в отношении подстановочных доменов? Я заинтересован в маршрутизации пользователей в веб-приложении ASP.NET на основе пользователя субдомена, используемого в URL.
Что-то вроде описанного здесь:
http://steinsoft.net/index.php?site=programming/articles/apachewildcarddomain
Спасибо
Ответы
Ответ 1
Ответ: Нет, IIS7 (по-прежнему) не поддерживает подстановочные имена хостов (см. this). Если вы хотите обслуживать несколько доменов на одном веб-сайте, единственным обходным решением на данный момент, как и предлагается, является использование выделенного IP-адреса и выполнение его с помощью DNS, который поддерживает подстановочные знаки.
Обновление в 2013 году
Для полноты IIS8 еще не имеет этой функции.
Обновление 2016
Наконец, IIS 10 в Windows 2016 поддерживает поддомены подстановочных знаков.
Ответ 2
Поддерживает ли IIS подстановочный заголовок узла? Могу ли я захватить и перенаправить *.mydomain.com на один веб-сайт?
Ответ: Да/Нет. Да, потому что вы
возможность перенаправления *.mydomain.com на один
Веб-сайт. Нет, потому что магия в
DNS, а не IIS.
Вот как вы это делаете:
В IIS MMC,
настроить веб-сайт без хоста
заголовок, затем назначьте IP-адрес
сайт. (если у вас есть один IP-адрес
в поле, то вы можете пропустить это).
При этом веб-сайт будет привязан к
конкретный IP-адрес и будет слушать все
HTTP-запросы отправляются на IP-адрес, и вы
выполняются:)
Следующий шаг - убедиться, что ваше имя
разрешение работает для шаблона
запрос и ответ с правильным IP-адресом
адрес. Если вы используете Microsoft DNS
службы, это не позволит вам создавать
a '*' Запись (если вы уже
создал доменную зону в DNS MMC),
вам необходимо сделать следующее:
- Перейдите к
%windir%\system32\dns\
- Найдите файл зоны. Э.Г.
mydomain.com.dns, откройте его с помощью Блокнота
- Добавить запись. Э.Г.
* A IP.IP.IP.IP
- Сохранить файл данных зоны
- Обновить данные зоны
в DNS MMC.
Обратите внимание, что, делая это, все *
ответ на IP, который вы
настроен ранее. Например.
abc.mydomain.com, www.mydomain.com,
K2k.mydomain.com и т.д.
Чтобы убедиться, что он работает, попробуйте выполнить ping
утилита ping (insert anything here).mydomain.com
и вы должны
получить ответы от IP.IP.IP.IP
Затем попробуйте просмотреть, http://(вставить
ничего здесь).mydomain.com/, вы
должен получить ту же веб-страницу, что вы
настроены.
Источник
Ответ 3
Вы не можете создать подстановочный знак (*) Запись в Microsoft DNS, но вы можете создать подстановочный знак CNAME
. Если все, что вы пытаетесь сделать, - это перенаправить все поддомены на определенный IP-адрес, это сработает. Например, если у вас есть запись A для www.mydomain.com
, вы можете добавить запись CNAME
для *.mydomain.com
и указать, что на www.mydomain.com
. Имя хоста в заголовке запроса все равно будет субдоменом, поэтому ваше веб-приложение должно уметь его поймать и обрабатывать, если хотите.
Ответ 4
Вы можете использовать IIS, если вы используете установщик Web Platform (http://www.microsoft.com/web/downloads/platform.aspx) и установите модуль URL Rewrite. Если вы добавите запись "A", например "*.example.com", это позволит отправлять все поддомены на ваш сервер IIS. На сервере IIS вы просто добавляете правило перезаписи URL-адресов на веб-сайт по умолчанию, чтобы делать все, что пожелаете, например перенаправление на другой URL-адрес. Когда пользователь вводит, скажем, "xyz.example.com", вы можете перенаправить на "example.com" и указать все неизвестные поддомены в корневой домен. Шаги:
-
Установите установщик веб-платформы: http://www.microsoft.com/web/downloads/platform.aspx
Запустите его, найдите "URL Rewrite" и установите его.
-
Перейдите на веб-сайт по умолчанию и откройте "URL Rewrite".
-
Нажмите "Добавить правило" с правой стороны.
-
Назовите правило и установите следующее:
Запрошенный URL: соответствует шаблону
Использование: регулярные выражения
Выкройка: (. *)
Логическая группировка: соответствие всем
-
Добавьте новое условие (нажмите кнопку "Добавить.." ) и установите:
Условие Вход: {CACHE_URL}
Проверьте, соответствует ли строка ввода: соответствует шаблону
Шаблон (при необходимости изменить): (http | https)://(. *?) \.rootdomain \.tld
Нажмите [OK].
-
Теперь прокрутите вниз до действия и установите:
Тип действия: Перенаправление
URL-адрес перенаправления (при необходимости изменить): {C: 1}://rootdomain.tld {R: 0}
"{C: #}" и "{R: #}" появляются из тестовых окон, когда вы нажимаете кнопки "Test pattern" рядом с записями шаблонов регулярных выражений. Вы можете сопоставить часть значения сервера и повторно использовать его позже.
Кроме того, вы можете проверить этот совет при передаче HTTP/HTTPS в URL-адресе ( "{C: 1}" на шаге 6 выше): http://weblogs.asp.net/owscott/url-rewrite-protocol-http-https-in-the-action
Ответ 5
Обновление 2: ссылка не работает, обновляется до IIS 10, теперь она поддерживает подстановочные знаки.
ОБНОВЛЕНИЕ: Это работает некоторое время, через некоторое время я обрушился несколькими запросами. Я бы не рекомендовал этот метод.
Убедитесь, что ваши записи DNS настроены правильно (запись CNAME * → @), и она будет работать безупречно. Протестировано несколькими доменами.
Теперь ссылка сломана
http://pzxc.com/apache-style-wildcard-hostname-rewrite-rules-in-iis