Вот как вы могли бы написать следующее в Managed Fusion URL Rewriter , который использует синтаксис Apache mod_rewrite:
Теперь мне нужно сделать это:
hxxp: //domain/subsiteName/Default.aspx
(WebForms)
hxxp: // домен / subsiteName / MVC / Controller / Action
(MVC)
RewriteRule /(.*)/Default.aspx /$1/mvc/Controller/Action
Однако я предполагаю, что у вас еще не все ваши каталоги установлены таким образом, поэтому вам нужен какой-то способ сообщить MVC, что subsiteName является параметром или вашими методами. Итак, что бы вы сделали на своих маршрутах, это:
routes.MapRoute(
"Default",
"/{siteName}/mvc/{controller}/{action}",
new { controller = "Home, action = Index }
);
Это займет путь перезаписи и объединит его со стандартом HomeController
. Тогда, скажем, для действия Index у вас будет что-то вроде этого:
public ActionResult Index (string siteName) { ... }
А потом просто обработайте siteName
особым образом. Очевидно, это слишком упрощенный пример того, как вы можете справиться с этим, но если вы хотите, вы можете также обработать это с помощью специального механизма просмотра, который перенаправляет на разные шаблоны в зависимости от имени сайта. Или вы можете извлечь siteName
из переменной routs, если вы не хотите, чтобы это было в каждом методе.
По существу, после того, как вы настроили вышеуказанную настройку, если это действительно та структура, которую вы хотите, есть множество способов справиться с этим, вам просто нужно найти тот, который наиболее легко используется вашим текущим кодом.