В зависимости от того, что вы на самом деле пытаетесь выполнить с помощью этих перенаправлений, это может быть полезно. Если вы пытаетесь просто обработать несколько поддоменов из одного веб-приложения, вы можете полностью подделать это поведение поддомена вне ASP.NET, используя сервер на базе IIS, на котором размещается одно веб-приложение, с помощью инструмента перезаписи ISAPI, такого как Фильтр перезаписи Ionics Isapi (http://www.codeplex.com/IIRF), при условии, что у вас есть возможность добавить фильтр ISAPI в среду хостинга.
Поскольку фильтр ISAPI обрабатывается до того, как ASP.NET узнает о запросе, вы можете разместить несколько поддоменов (и полных доменов) только в одном веб-приложении. К сожалению, эмуляция перенаправления этого типа во встроенном веб-сервере ASP.NET (Cassini) невозможна, поскольку он не использует ISAPI. Этот метод позволяет вам проверить функциональность ваших окончательных поддоменов, но только в месте окончательного перенаправления; Вы также не можете по-настоящему протестировать исходную карту домена в Cassini, так как файл хостов Windows не разрешает правила с портами.
Если вы настроили свое единственное приложение на наличие страниц, чтобы обрабатывать функциональность всех желаемых поддоменов, вы можете просто перенаправить запрос на поддомен в отдельное приложение в нужном месте. Это может быть просто папка страниц в вашем приложении, которая обрабатывает всю логику вашего нового субдомена. Вот несколько примеров правил перезаписи для Ionics, которые будут отправлять запросы для различных поддоменов в конечное местоположение в вашем единственном веб-проекте:
RewriteCond %{HTTP_Host} ^(?~new-sub-domain.yourdomain.com).*$ [I]
RewriteRule ^(.*)$ http://www.yourdomain.com/new-sub-domain$1 [I,R=302]
RewriteCond %{HTTP_Host} ^(?~another-new-sub-domain.yourdomain.com).*$ [I]
RewriteRule ^(.*)$ http://www.yourdomain.com/another-new-sub-domain$1 [I,R=302]
# '#' is a comment marker in the rewrite files
# [I] at the end means case-insensitive
# [L] at the end means last rule (sending the request on but hiding the forward from the end user)
# [R] at the end means an official redirect and can be used instead of [L] (the end user will then see a new request, such as a 301 redirect using [R=301])
Это приведет к тому, что все запросы к новым поддоменам перейдут в каталог в вашем существующем проекте (/ new-sub-domain / и / another-new-sub-domain /, соответственно); это можно изменить, чтобы отправить их туда, куда вы хотите в этом проекте.
Хотя этот подход позволяет размещать несколько поддоменов (и, возможно, несколько полных доменов) из одного приложения, ограничение на перенаправление / перезапись на веб-сервере ASP.NET (Cassini) ограничит вас проверкой функциональности. из этого окончательного местоположения (например, "/new-sub-domain/").