Это правильный способ сделать перенаправление 301? - PullRequest
0 голосов
/ 24 февраля 2010

Когда я проверяю свою страницу с помощью этих онлайн-анализаторов заголовков хоста, на странице появляется сообщение 200 OK.

Но при просмотре в моем браузере он перенаправляет на другой веб-сайт (как я хочу, чтобы он был).

Код, который я использую:

 context.Response.Status = "301 Moved Permanently";
 context.Response.AddHeader("Location", "http://www.example.com/article" + articleID);
 context.Response.End();

Я поместил этот код в HttpModule.

это работает, потому что когда вы пытаетесь нажать на ссылку, он выполняет перенаправление. Кажется, он не возвращает правильный заголовок http.

Что-то не так?

Ответы [ 5 ]

1 голос
/ 24 февраля 2010

Ваш код точно правильный. Я использовал именно то, что вы получили в течение многих лет:

context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location",URL);
context.Response.End();
1 голос
/ 24 февраля 2010

Убедитесь, что буфер ответов полностью очищен, прежде чем добавлять заголовки:

context.Response.Clear();
context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location", "http://www.example.com/article" + articleID);
context.Response.End();
1 голос
/ 24 февраля 2010

попробовать:

context.Response.StatusCode = 301;
context.Response.StatusDescription = "Moved Permanently";
context.Response.RedirectLocation = "http://www.example.com/article" + articleID;
context.Response.End();

Я использую вышеупомянутое в пользовательском модуле, и он возвращает правильный ответ 301 HTTP.

0 голосов
/ 24 февраля 2010

Когда я использую протоколирование HTTP в Помощнике по веб-разработке, я вижу 301 и 200. Так что, да, ваш код правильный.

0 голосов
/ 24 февраля 2010

Не могли бы вы попробовать: HttpContext.ApplicationInstance.CompleteRequest ()

Вместо Response.End ()?

...