Web.config и сопоставление поддоменов с папками

У меня есть три поддомена: dev.mydomain.com, archive.mydomain.com и www.mydomain.com.

Можно ли создать файл web.config, который будет сопоставлять запросы к данному поддомену с папкой, находящейся в корневом каталоге, который соответствует этому поддомену?

Например. если моя папка D:\inetpub содержит dev\index.cfm, archive\index.cfm и www\index.cfm, я бы хотел сопоставить запросы http://dev.mydomain.com/index.cfm с первым, http://archive.mydomain.com/index.cfm со вторым и http://www.mydomain.com/index.cfm с третьим.

Спасибо за внимание!


person justinbach    schedule 11.01.2011    source источник


Ответы (2)


Я бы порекомендовал вам изучить переписывание URL для этого. Есть отличные платные и бесплатные. Они принимают все запросы на уровне IIS, сравнивают их с таблицей регулярных выражений и молча пересопоставляют указанные вами URL-адреса.

В зависимости от того, что вы делаете с вашими выражениями, будет что-то вроде:

RewriteCond %{HTTP_HOST} ^(dev|archive|www).mydomain.com$
RewriteRule ^/(.*)$ /$0/$1 [F]
person Chris Haas    schedule 11.01.2011
comment
Крис, спасибо за ответ. Однако похоже, что вы используете правила в стиле .htaccess, и я пытаюсь сделать это в IIS с помощью файла web.config. Я не думал, что IIS поддерживает перезапись в стиле .htaccess... я ошибаюсь? - person justinbach; 14.01.2011
comment
@justinbach, если вы перечитаете выше, вы увидите, что я упомянул об использовании стороннего механизма перезаписи. У большинства есть правила, очень похожие на htaccess, то, что я опубликовал, я думаю, работает во IIRF. Проблема с web.config заключается в том, что он вступает в игру только тогда, когда в игру вступает ASP.Net. Но ASP.Net вступает в игру только для расширений файлов, сопоставленных с ним в IIS. Так, например, если кто-то запросил JPG, IIS просто передаст его клиенту или 404, если его не удастся найти, ASP.Net никогда не будет запущен. - person Chris Haas; 14.01.2011
comment
@ Крис, моя ошибка, извини. Спасибо за различие; Я буду исследовать, и какой из них может соответствовать счету. - person justinbach; 14.01.2011
comment
Просто обновление для валюты ... @ChrisHaas заявляет, что использование web.config является проблемой из-за ASP.NET. Это меньше проблем с IIS7. Поскольку конвейер веб-запросов теперь обрабатывается полным стеком .NET, вы можете применять HTTP-модули ASP.NET, которые могут влиять на любой тип запроса, с расширением файла или без него. Кроме того, в IIS 6 вы можете установить правило с подстановочными знаками для сайта или виртуального прямого доступа, которое направляет все запросы через конвейер управляемых запросов. (Это был метод размещения MVC в iis без принудительного расширения маршрутов.) - person Peter; 31.05.2013

Вы можете сделать это просто в IIS, используя заголовки хоста.

person Brian    schedule 08.03.2011