как сделать 301 постоянный редирект в asp.net - PullRequest
2 голосов
/ 21 января 2011

Не могли бы вы сказать мне, как сделать 301 постоянный редирект в asp.net?

Я написал код в файле Global.asax, но мой веб-клиент говорит, что он не работает,

Я написал следующий код в файле Global.asax:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
        {
            HttpContext.Current.Response.Status =
                "301 Moved Permanently";
            HttpContext.Current.Response.AddHeader("Location",
                Request.Url.ToString().ToLower().Replace(
                    "http://lsatfreedom.com",
                    "http://www.lsatfreedom.com"));
        } 

    }

Это полезно? Пожалуйста, помогите.

Спасибо

Ответы [ 4 ]

2 голосов
/ 21 января 2011

Я думаю, что вам не хватает Response.Clear() и Response.End(), попробуйте с этим.

Например:

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
        {
           string sNewPage = Request.Url.ToString().ToLower().Replace(
                    "http://lsatfreedom.com",
                    "http://www.lsatfreedom.com");

            Response.Clear();
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", sNewPage);
            Response.End();
        } 
    }
2 голосов
/ 21 января 2011

Сначала попробуйте проверить, работает ли это перенаправление при загрузке страницы.Если да, то попробуйте это с Begin_Request.

Надеюсь, это даст вам некоторую подсказку:

private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}
1 голос
/ 21 января 2011

Я бы изменил web.config и добавил бы следующее правило из этого ответа.

Пересылка http://mydomain.com/ctrlr/act/val в http://WWW.mydomain.com/ctrlr/act/val

Вот как мы добавляем www

1 голос
/ 21 января 2011

Я полагаю, что вам не хватает CompleteRequest()

Так что ваш код должен выглядеть следующим образом:

    if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
        "http://lsatfreedom.com"))
    {
        HttpContext.Current.Response.Status =
            "301 Moved Permanently";
        HttpContext.Current.Response.AddHeader("Location",
            Request.Url.ToString().ToLower().Replace(
                "http://lsatfreedom.com",
                "http://www.lsatfreedom.com"));
       CompleteRequest();
    } 

Если вы не добавите CompleteRequest, ASP.Net попытаетсяобрабатывать его сам, в этом случае заголовок может существовать, но статус может фактически быть перезаписан между началом ответа и его окончанием.Это сделало бы так, чтобы вы не получили реальное перенаправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...