ASP.NET 4.0: 301 Permanent Redirect (перемещение навсегда)
302 Redirect (временное перемещение) означает, что страница перемещается на временный адрес.
301 Permanent Redirect (перемещение навсегда) означает, что перенаправление идет на постоянный адрес.
Это важно потому что поисковые системы оценивают временные адреса ниже, чем постоянные. Таким образом, неправильное перемещение может грозить для владельцев сайтов понижением ссылочного веса и, как результат, снижением позиции в поисковой выдаче.
В ASP.NET есть метод Redirect класса Response, который возвращает статус 302:
Response.Redirect("~/MyPage.aspx");
Для того, чтобы переместить страницу навсегда, необходимо использовать следующий код:
protected void Page_PreInit(object sender, EventArgs e) { Response.StatusCode = 301; Response.StatusDescription = "Moved Permanently"; Response.AddHeader("Location", "MyPage.aspx"); }
В ASP.NET 4.0 появился новый метод RedirectPermanent, который можно использовать для постоянного перемещения:
Response.RedirectPermanent("~/MyPage.aspx");
Более подробно можно почитать на странице: http://msdn.microsoft.com/en-us/library/dd384856%28VS.100%29.aspx.
Также был добавлен метод RedirectToRoutePermanent, который используется для перенаправления, если используется роутинг:
Response.RedirectToRoutePermanent( new RouteValueDictionary {productId="1", category="widgets"});
Более подробно можно почитать на странице: http://msdn.microsoft.com/en-us/library/dd992972%28VS.100%29.aspx.
Кроме того, в ASP.NET 4.0 исправлена ошибка, связана с использованием Reponse.Redirect(), в результате чего бросалось исключение ThreadAbortException. Решением было использование заглушки вида:
try { // Ваш код Response.Redirect("~/MyPage.aspx"); // Response.End(); } catch (ThreadAbortException exc) { // Ничего не делаем } catch (Exception exc) { // Обработка ошибок }
В новой версии необходимости в этой заглушке нет.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |