Настройте asp.net mvc hocalhost / Products.aspx для hocalhost / Продукты - PullRequest
1 голос
/ 18 апреля 2011

Как настроить asv.net mvc маршрутизацию для постоянного перенаправления 301

hocalhost / Products.aspx и hocalhost / Search.aspx

на

hocalhost / Продукты и hocalhost/ Search

т.е. удалить расширение .aspx из пути?

1 Ответ

2 голосов
/ 18 апреля 2011

Что-то в этом роде должно сработать.Отобразите следующий маршрут:

routes.MapRoute("Redirect route", "{file}.aspx", 
    new { controller = "home", action = "redirect" });

И определите действие Redirect в вашем контроллере:

public ActionResult Redirect()
{
    // use Request.RawUrl, for instance to parse out what was invoked

    // this regex will extract anything between a "/" and a ".aspx"
    var regex = new Regex(@"(?<=/).+(?=\.aspx)", RegexOptions.Compiled);
    var action = regex.Match(Request.RawUrl);

    return RedirectToActionPermanent(action.Value);
}

Вы можете перенаправить обе страницы aspx на один и тот же маршрут перенаправления и определить, какиеНа самом деле файл был вызван синтаксическим анализом HttpContext.Request.RawUrl (хотя, возможно, есть лучший способ для этой последней точки).

ОБНОВЛЕНИЕ

Существует действительно более простой способ,как выяснил сам @alex.Чтобы получить файл в исходном запросе, просто выполните:

string file = RouteData.Values["file"].ToString();
...