2013-04-21 3 views
2

Как я могу удалить .aspx с каждой веб-страницы .aspx на веб-сайте? Следующие работы, но только для корня веб-сайта и определения длинных структур папок неэффективны и беспорядочны.Удалить .aspx со всех веб-страниц

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("RemASPx", "{file}", "~/{file}.aspx"); 
} 

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    RegisterRoutes(RouteTable.Routes); 
} 

Следующие работы с не слэш, но как бы я заставить его иметь косую черту, как ничто не может следовать за улов-все routeURL?

routes.MapPageRoute("RemASPx", "{*file}", "~/{file}.aspx"); 
+0

это: http://blog.stevensanderson.com/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/ – MUG4N

+0

Это может помочь , хотя он не был отмечен как принятый http://forums.iis.net/t/1150350.aspx/2/10 и есть этот блог http://www.hanselman.com/blog/IntroducingASPNETFriendlyUrlsCleanerURLsEasierRoutingAndMobileViewsForASPNETWebForms.aspx – christiandev

+1

Интересные которые указывали мне в правильном направлении с переписыванием, как в принятом ответе. – user2303264

ответ

3

Держите эту настройку маршрутизации:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("RemoveASPx", "{*file}", "~/{file}.aspx"); 
} 

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

Добавить рерайт:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    string url = HttpContext.Current.Request.Url.AbsolutePath; 
    if (string.IsNullOrEmpty(url) || 
     System.IO.Directory.Exists(Server.MapPath(url))) 
     return; 

    if (url.EndsWith("/")) 
    { 
     Response.Clear(); 
     Response.Status = "301 Moved Permanently"; 
     Response.AddHeader("Location", url.Substring(0, url.Length - 1)); 
     Response.End(); 
    } 
} 

Над блоком кода:

  1. проверяет, является ли URL-адрес является нулевым или пустым для себя -установительные причины
  2. проверяет, является ли URL-адрес каталогом, потому что вы не хотите переписывать каталог (если что-либо в состоянии по умолчанию в приложениях будет вызвано цикл переадресации, поскольку конечная косая черта добавляется в каталоги)
  3. проверить, если URL заканчивается косой чертой, поэтому, если ее необходимо удалить
  4. 301 ответ используется (наиболее подходящий ответ - особенно для SEO); добавлен заголовок вызывает редирект проверку
Смежные вопросы