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ş:
Nasıl YouTube API YouTube video küçük ...
Nasıl JavaScript para olarak format nu...
Nasıl bir dize dönüştürmek için yığın ...
Nasıl kalıcı olarak Kişisel satır numa...
Nasıl, asenkron yerine senkron AJAX is...