SORU
18 Mayıs 2009, PAZARTESİ


Nasıl ASP.NET MVC küçük yollar alabilir miyim?

Nasıl ASP.NET MVC küçük harf, artı mümkünse alt çizgi, yollar alabilir miyim? /dinners/details/2 Ara DinnersController.Details(2) ve, mümkünse, /dinners/more_details/2 arama DinnersController.MoreDetails(2)?

Tüm bu süre hala {controller}/{action}/{id} gibi modelleri kullanarak.

CEVAP
25 Temmuz 2012, ÇARŞAMBA


Sistem İle.Web.RouteCollection bu LowercaseUrls özelliğini ayarlayarak bu basit uygulayabilir 4.5 yönlendirme:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.LowercaseUrls = true;

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

Bunu yaptığınızı varsayarak SEO için küçük bağlantıların çoğu, bu makalede dediği gibi) için gelen URL yönlendirmek istiyorum sebep de.

protected void Application_BeginRequest(object sender, EventArgs e)
{
  //You don't want to redirect on posts, or images/css/js
  bool isGet = HttpContext.Current.Request.RequestType.ToLowerInvariant().Contains("get");
  if (isGet && HttpContext.Current.Request.Url.AbsolutePath.Contains(".") == false)    
  {
     string lowercaseURL = (Request.Url.Scheme   "://"   HttpContext.Current.Request.Url.Authority   HttpContext.Current.Request.Url.AbsolutePath);
     if (Regex.IsMatch(lowercaseURL, @"[A-Z]"))
     {
      //You don't want to change casing on query strings
      lowercaseURL = lowercaseURL.ToLower()   HttpContext.Current.Request.Url.Query;

      Response.Clear();
      Response.Status = "301 Moved Permanently";
      Response.AddHeader("Location", lowercaseURL); 
      Response.End();
    }
 }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Just So

    Just So

    3 HAZİRAN 2007
  • schmittastic

    schmittastic

    9 EYLÜL 2009
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006