6

Przeanalizowałem wszystko i przeczytałem wiele różnych odpowiedzi - niektóre próbowałem w to uwierzyć bez powodzenia. Nie jestem zawodowym programistą, ale dziękuję ludziom na tym forum za nauczanie mnie wszystkiego o wszystkim, od jquery do doctypes, aż do nazwy!Jaki jest bardziej zalecany sposób przekierowania 301 w asp.net?

Mam stronę internetową opracowaną w VWD 2010 Express. Chcę tylko wiedzieć 2 rzeczy:

  1. Wiem, że to złe dla wyszukiwarek/duplikaty się Domena_użytkownika i www.yourdomain obu, więc chcę, aby skonfigurować przekierowanie 301 tak, że jeśli użytkownik końcowy typy w domenie mydomain, są automatycznie przekierowywane na www.mydomain (wraz z www).

  2. Przenieśliłem niektóre strony, które nie znajdują się w katalogu głównym, ale w folderach. Dlatego chcę zastąpić przestarzałą stronę nową lokalizacją. Chcę to zrobić, automatycznie przekierowując je z www.mydomain/usług /engineering.aspx do www.mydomain/produktów /engineering.aspx.

Czy to trudne? Czy jest to (zalecane) używać .htaccess lub web.config, czy coś innego?

Dziękuję za poświęcony czas na przeczytanie tego i szczerze doceniam wszelkie opinie.

Jason Weber

Odpowiedz

7

Chyba mam źle .htacess jest dla Apache i jeśli kodowanie w ASP.Net jesteś prawie na pewno za pomocą IIS. Więc igonuj rzeczy .htaccess w swoich badaniach.

Możesz użyć jakiegoś edytora adresów URL dla przekierowań, ale może to być bardzo skomplikowane. Gdybym był tobą chciałbym zachować to jak najprostsze i zrobić swoje stare strony przekierowań 301 w przypadku Page_Load tj

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

Dla kanonicznej przekierowania (bez www na www) można zrobić coś podobnego z Global.asax plik w Application_BeginRequest wykryć non wariant www tj

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")); 
} 

(to nie jest mój kod pochodzi here)

to jest to, co chciałbym robić w każdym razie - to ma tę zaletę, że są łatwe do zrozumienia i trzymać cię z dala od wszelkich dziwna konfiguracja serwera sieciowego, którą czasem znajduję trochę czarnej skrzynki.

+0

Doskonała informacja, Krab - bardzo doceniany! Czuję się dość głupio, że nie rozpoznaję rzeczy .htaccess/apache, ponieważ jestem na serwerze Windows. Informacje i link są doskonałe - doskonałe porady w mojej sytuacji. Przekierowania te nie powinny być zbyt trudne do wdrożenia. Jeszcze raz dziękuję za poświęcony czas! –

+0

@JasonWeber Nie ma problemu. Powodzenia z tym wszystkim –

6

Od kiedy używasz VWD 2010 Express, możesz skorzystać z metody .NET4 Response.RedirectPermanent (stringURL). Jest częścią obiektu HttpResponse.

Więcej dokumentacja dostępna jest tutaj: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.redirectpermanent.aspx

Funkcjonuje to, że sam był Response.Redirect() jednak wydaje kod 301 do klienta wraz z wykonaniem przekierowanie.

+0

To było idealne i łatwe - dziękuję za odpowiedź i link, Kyle! –

+0

I tak, jestem na platformie .net4.0, więc to było idealne rozwiązanie. –

-1

Czy to, gdzie chcesz przekierować ponad 301

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

Następnie użyj narzędzia wglądu z Chrome i sprawdzić w zakładce „Sieć”, aby zobaczyć kod stanu. To działa dla mnie.

Powiązane problemy