Nowadays almost every web solution has backend management system like Admin Panel, Control Center, Dashboard, etc. In WebForms you can create folder and put security restriction to it. How about MVC? To achieve same functionality and for even better organization of solution structure you can use Areas. (Organizing an ASP.NET MVC Application using Areas). You can find a lot of information about using areas in MVC. I just want to show you how to use routing rules in solution contains areas.

For each area there are its own routing rules, but for whole solution, routing rules defined in global.asax file. How exclude from these routing rules areas and their controllers? Here is a simple solution:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
            new string[] { "Kitsula.Controllers" }
        );
    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
    }
}

In this example in the routing rule last parameter new string[] { "Kitsula.Controllers" } says "use routing rule only for Kitsula.Controllers" which are controllers of solution in namespace Kitsula.Controllers. It excludes controllers of areas’ cause their controllers in another namespaces. For example Kitsula.Areas.Admin.Controllers.