Каков наиболее рекомендуемый способ перенаправления 301 в asp.net? - PullRequest
6 голосов
/ 07 января 2012

Я гуглил все, и я прочитал тонну различных ответов - некоторые из них я пытался привлечь безуспешно.Я не профессиональный программист, но я благодарю людей на этом форуме за то, что они так многому научили меня обо всем, от jquery до doctypes, на ваше имя!

У меня есть сайт, разработанный в VWD 2010 Express.Я просто хочу знать 2 вещи:

  1. Я знаю, что плохо для поисковых систем / дублированного контента иметь ваш домен и www.yourdomain оба, поэтому я хочу настроить перенаправление 301 так, чтобыесли конечный пользователь вводит в mydomain, они автоматически перенаправляются на www.mydomain (с www).

  2. Я переместил некоторые страницы, которые не находятся в корне,но в папках.Поэтому я хочу заменить устаревшую страницу новым местоположением.Я хочу сделать это, автоматически перенаправляя их с www.mydomain / services / engineering.aspx на www.mydomain / products / engineering.aspx.

Это сложно? (рекомендуется) использовать .htaccess, или web.config, или что-то еще?

Спасибо за ваше время, прочитав это, и я искренне ценю любые отзывы.

Джейсон Вебер

Ответы [ 3 ]

7 голосов
/ 08 января 2012

Если я неправильно понял .htacess для Apache и если вы программируете в ASP.Net, вы почти наверняка используете IIS.Так что играйте в .htaccess в своих исследованиях.

Вы можете использовать какой-нибудь URL Rewriter для ваших перенаправлений, но это может быть очень сложным.Если бы я был тобой, я бы сделал это как можно проще и сделал бы твои старые перенаправления 301 страницы в событии Page_Load, т. Е.

protected void Page_Load(object sender, System.EventArgs e)
{
   Response.Status = "301 Moved Permanently";
   Response.AddHeader("Location","http://www.domainname.com/new-page.aspx");
}

Для своего канонического перенаправления (не с www на www) ты мог бы сделать подобное в Global.asax файл в Application_BeginRequest, чтобы обнаружить вариант без www, т.е.

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

(это не мой код, откуда он взялся здесь )

Вот чтоВ любом случае, я бы поступил так: преимущество в том, что он прост в понимании и не позволяет использовать любую странную конфигурацию веб-сервера, которую я иногда нахожу в чёрном ящике.

6 голосов
/ 08 января 2012

Поскольку вы используете VWD 2010 Express, вам будет полезно использовать метод .NET4 Response.RedirectPermanent (stringURL). Он является частью объекта HttpResponse.

Дополнительная документация доступна здесь: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

Эта функция аналогична Response.Redirect (), однако она выдает клиенту код 301 вместе с выполнением перенаправления.

0 голосов
/ 21 июня 2017

Делайте это там, где вы хотите перенаправить более 301

string url = "newpage.aspx";
        Response.Clear();
        Response.StatusCode = 301;
        Response.RedirectLocation = url.ToLower();
        Response.End();

Затем используйте инструмент проверки из Chrome и откройте вкладку «Сеть», чтобы увидеть код состояния. У меня это работает.

...