私はWeb開発とASP.NETMVCに慣れていないので、誰かがこの問題について私を助けてくれるといいですね。私の目標は、ユーザーが独自のミニWebサイトを作成するのに役立つMVCアプリケーションを設計することです。各ユーザーは、自分のミニWebサイトと、サイトのページとテンプレートを変更するための管理パネルを取得します。同様のことを達成するためのスクリプトはそこにあると思いますが、特定の要件に合わせて独自のスクリプトを作成する必要があります。その目標に向けて、メインのmvc 3アプリケーションを作成し、その下にサイトとしてエリアを作成しました。www.site1.mainsite.comのような独自のサブドメインURLをユーザーに持たせたいと考えています。ここで、site1はユーザーのミニサイトの名前です。そのために、メインサイト用と次のようなエリア用に2つのルートを追加しました。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "MainSite.UI.Controllers" }
);
エリア内登録
context.MapRoute(
"Sites_default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new {controller = new SiteConstraint()},
new[] { "MainSite.UI.Areas.Site.Controllers" });
どちらも同じURLタイプですが、エリアルートには次のように追加した制約があります
var url = httpContext.Request.Headers["HOST"];
var storeName = url.Split('.')[1];
var match = storeName != "mainsite";
return match;
これまでのところ機能していますが、私はそれが良いデザインだとは思いません。これとは別に、もう2つの領域を追加する必要があります。1つはsiteadminで、もう1つはブログです。これを達成するための最良の方法は何ですか?
- サブドメインのURLは、エリア「サイト」に送信する必要があります
- サブドメインのurl/Adminはエリア「siteadmin」にルーティングする必要があります
- ドメイン/ブログはブログエリアにルーティングする必要があります。
- ドメインの他のURLはメインコントローラーで処理する必要があります
前もって感謝します