none
реализация Мультидомености в одном MVC 3 & MVC4 проекте, как реализовать? RRS feed

  • Вопрос

  • Добрый день господа

    У меня есть 5 разных сайтов но у них есть часть одной и той же функциональности. Хочу их обеденить в один проект используюя MC3 или MVC4. 

    Подскажите кто занет как реализовать поддержку мултидомености в MVC ?

    те что бы под разнми доменами открывались разные сайты.

    19 июля 2012 г. 7:21

Ответы

  • Уже понятно. Тогда мультидомены тут не при теме. Если Вы объедените их все в один, то нужно будет выделить для каждой части свой роут, а потом делать редиректы на уровне сервера. Подобные настройки должен предоставить хостинг провайдер либо Вы отлавливаете его в коде и сами делаете перенаправление. Сайт у Вас будет физически один, с привязкой к нему четырёх доменов. В коде Вы анализируете текущий домен, который запросил пользователь и перенаправляете его на нужны контроллер, всё.
    • Помечено в качестве ответа DrakonoffNet 19 июля 2012 г. 10:03
    19 июля 2012 г. 10:02
    Модератор
  • Вот пример для быстой реализации подобного, он далёк от совершенства но работать будет.

    public static void RegisterRoutes(RouteCollection routes)
        {
          routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
          routes.Add(new Route("site1/{controller}/{action}/{id}", new MvcRouteHandler())
          {
            Defaults = new RouteValueDictionary(new
            {
              controller = "home",
              action = "index",
              id = UrlParameter.Optional
            }),
            DataTokens = new RouteValueDictionary(new { Namespaces = new string[] { "DomainRedirect.Controllers.Site1" } })
          });
          routes.Add(new Route("site2/{controller}/{action}/{id}", new MvcRouteHandler())
          {
            Defaults = new RouteValueDictionary(new
            {
              controller = "home",
              action = "index",
              id = UrlParameter.Optional
            }),
            DataTokens = new RouteValueDictionary(new { Namespaces = new string[] { "DomainRedirect.Controllers.Site2" } })
          });
        }

    А  вот этот пример - более солидное решение. Просто Вам нужно время, чтобы модифицировать его и подогнать под Ваши требования.

    • Помечено в качестве ответа DrakonoffNet 21 июля 2012 г. 15:07
    21 июля 2012 г. 13:27
    Модератор

Все ответы

  • По моему у Вас несколько смутное представление о мультидоменности. "Хочу их обеденить в один проект используюя MC3 или MVC4" - тогда получится один сайт, и мультидоменность не нужна. Время сейчас такое, что каждый провайдер обеспечивает поддержку сразу нескольких сайтов или даже десятка сайтов, на одном аккаунте. Или Вы под мультидоменность подразумеваете домены третьего уровня? Если можно поконкретнее напишите что именно требуется.
    19 июля 2012 г. 9:00
    Модератор
  • да получился вопрос смутный

    попробую пояснить на примере 

    у меня есть сайты site1.ru - авто тема, site2.ru - медикаменты, site3.ru - бытовая техника,  site4.ru - блог

    все эти сайты имею свой индивидуальный дизайн и содержание.

    в текущем состоянии это 4 проекта MVC 

    а мне хотелось бы обеденить это в один MVC что бы при выборе site1.ru или site2.ru (к примеру) открывался сайт с соотвествующей теметикой и при этом одна админка на все сайты.

    Надеюсь я пояснил яснее.

    а что касаемо хостеров и поддержки множество доменов хостером - так мой вопрос не про это . Зостер всего лиш предоставляет возможность припарковать к хосту домен а вот дальше скрипт сам разруливает что и под каким доменом отдавать пользователю

    19 июля 2012 г. 9:29
  • Уже понятно. Тогда мультидомены тут не при теме. Если Вы объедените их все в один, то нужно будет выделить для каждой части свой роут, а потом делать редиректы на уровне сервера. Подобные настройки должен предоставить хостинг провайдер либо Вы отлавливаете его в коде и сами делаете перенаправление. Сайт у Вас будет физически один, с привязкой к нему четырёх доменов. В коде Вы анализируете текущий домен, который запросил пользователь и перенаправляете его на нужны контроллер, всё.
    • Помечено в качестве ответа DrakonoffNet 19 июля 2012 г. 10:03
    19 июля 2012 г. 10:02
    Модератор
  • а вы могли бы подсказать на пример реализации данного решения ?
    19 июля 2012 г. 10:04
  • Пойду домой, попробую привести.
    19 июля 2012 г. 13:53
    Модератор
  • Вот пример для быстой реализации подобного, он далёк от совершенства но работать будет.

    public static void RegisterRoutes(RouteCollection routes)
        {
          routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
          routes.Add(new Route("site1/{controller}/{action}/{id}", new MvcRouteHandler())
          {
            Defaults = new RouteValueDictionary(new
            {
              controller = "home",
              action = "index",
              id = UrlParameter.Optional
            }),
            DataTokens = new RouteValueDictionary(new { Namespaces = new string[] { "DomainRedirect.Controllers.Site1" } })
          });
          routes.Add(new Route("site2/{controller}/{action}/{id}", new MvcRouteHandler())
          {
            Defaults = new RouteValueDictionary(new
            {
              controller = "home",
              action = "index",
              id = UrlParameter.Optional
            }),
            DataTokens = new RouteValueDictionary(new { Namespaces = new string[] { "DomainRedirect.Controllers.Site2" } })
          });
        }

    А  вот этот пример - более солидное решение. Просто Вам нужно время, чтобы модифицировать его и подогнать под Ваши требования.

    • Помечено в качестве ответа DrakonoffNet 21 июля 2012 г. 15:07
    21 июля 2012 г. 13:27
    Модератор
  • Спасибо вам огромное !
    21 июля 2012 г. 15:07