Tym postem chciałbym zainaugurować cykl postów “encyklopedycznych” (czytaj: z konkretną wiedzą) na temat pozycjonowania i SEO. Na pierwszy rzut pójdą dzisiaj przekierowania 301, jako że zrozumienie tychże jest podstawą do przejścia do bardziej zaawansowanych zagadnień jak migracja stron zgodna z SEO, duplikaty podstron itp.
Żeby wytłumaczyć czym są przekierowania 301 i kiedy ich używać, najprościej będzie pokazać to na przykładzie innych najbardziej podstawowych nagłówków (tzw. header-ów) protokołu HTTP:
1. Nagłówek 200

Pierwszy, najbardziej popularny przypadek to gdy przeglądarka (lub robot spiderujący emulujący przeglądarkę) wysyła do serwera prośbę o przesłanie zawartości danego pliku (html, obazka, pliku javascript itp.) z danego adresu URL. Serwer uznaje, że dany plik istnieje, i przesyła zawartość tego pliku wraz z nagłówkiem 200, który oznacza po prostu “wszystko OK, plik istnieje a to jego zawartość”.
2. Nagłówek 404
Drugi przykład to sytuacja jak wyżej, tyle że tutaj serwer nie znajduje danego pliku i jest zmuszony wysłać nagłówek 404 – najczęściej z odpowiednią stroną typu “Przepraszamy, strona nie istnieje”. Nagłówek 404 oznacza w skrócie “Strona pod takim adresem nie istnieje”.
3. Nagłówek 302

Trzeci przykład to standardowy nagłówek 302 – stosuje się go domyślnie w przypadku gdy następuje przekierowanie tzn. odpowiedź serwera zawiera nie tyle treść danego pliku lecz zamiast tego informacje gdzie go znaleźć – czyli w praktyce kiedy po wpisaniu jednego adresu w przeglądarce, ta “samoczynnie” przeskakuje nam do innego adresu… W skrócie oznacza tyle co “strona której szukasz już nie istnieje ale przekierujemy Cię za to pod adres XYZ”.
Jak te trzy podstawowe typy nagłówków mają się do SEO? Otóż wbrew pozorom mają się i to bardzo – z prostego powodu: wyszukiwarki takie jak Google poznają naszą stronę poprzez jej spiderowanie / crawling – a więc poprzez sukcesywne indeksowanie naszej strony www przez robota emulującego zwykłą przeglądarkę www – i reagującego na to jakie nagłówki HTTP zostają mu przesłane.
Oto bardziej konkretny przykład – wyobraźmy sobie, że prowadzę stronę www.zupagrzybowazpieczarkami.pl – która nagle staję się hitem w Polskim internecie. Strona jest bardzo popularna i robot spiderujący google wchodzi na nią co tydzien spiderując np. 100 podstron starych i 100 nowych (jeśli istnieją). Wyobrażmy sobie teraz, że w momencie gdy robot ma zacząć swoją cotygodniową sesję re-spiderowania, pracuje właśnie na serwerze gdzie przez przypadek uploaduje wersję z błędęm który powoduje, że wszystkie strony zwracają nagłówek 404 (”strona nie istnieje”). Strona w takiej wersji zostaje załadowana on-line, robot google ją spideruje w takiej właśnie wersji – po godzinie natomiast zwracam uwagę, że coś jest nie tak i poprawiam błąd.
Czy coś się stało? Otóż owszem – nasza strona – a przynajmniej wszystkie 100 podstron re-indeksowanych przez robota – własnie zniknęły z wyników wyszukiwania Google. Zwracając nagłówki 404 “poinformowaliśmy” właśnie Google, że dane strony nie istnieją i Google nie powinien ich już wyświetlać w swoich wynikach wyszukiwania!
Tydzień póżniej otrzymuje list od prawnika reprezentującego konsorcjum oscypkowe jakobym bezprawnie używał nazwy “oscypek” i zamiast tego powinienem używać nazwy “ser góralski” w przepisie znajdującym się pod adresem:
http://www.zupagrzybowazpieczarkami.pl/z-oscypkiem.pl
Przygotowuje więc prosty fix – polegający na tym, że wejścia na powyższy adres będą przekierowywane (korzystając ze standardowych przekierowań 302) na adres:
http://www.zupagrzybowazpieczarkami.pl/z-serem-goralskim.pl
Moją stronę ponownie odwiedza spider Google, i spodziewam się, że już niedługo stary adres podstrony zniknie z adresów pokazywanych w wyszukiwarce – a zamiast niego pojawi się nowy. Tak się jednak nie dzieje – zamiast tego moja podstrona nagle “spada” z pierwszej strony wyników na przed-ostatnią..! Co się stało?
Problem w tej trochę przydługiej opowiastce polega na tym, że nagłówek 302 – czyli nagłówek zwracany ze standardowymi przekierowaniami – mówi robotowi spiderującemu Google tylko tyle: strona której szukasz już nie istnieje – usuń ją prosze z indeksu – a na jej miejsce wprowadź nową podstronę znajdującą się pod nowym adresem… NIE mówi natomiast, że nowa podstrona jest de facto tą samą stroną co stara (!).
4. Nagłówek 301

W tym momencie na scene wkracza nagłówek 301 – nazywany też “Moved Permanently”. Teoretycznie działa on dokładnie tak samo jak zwykłe przekierowanie z naglówkiem 302. W praktyce diabeł tkwi w szczegołach czyli w tym co komunikuje on robotom indeksującym. Jego znaczenie to “strona której szukasz została przesunięta pod nowy adres”.
Różnica między 302 a 301 jest więc taka, że 302 mówi przeglądarce po prostu “taka strona nie istnieje – a teraz przesuwamy Cię na inny adres”. Nagłówek 301 robi coś bardzo podobnego ale przy okazji mówi coś bardzo ważnego – “ta strona została przesunięta pod nowy adres – ale to wciąż ta sama strona”.
Gdy więc użyję nagłówka 301 do przekierowania do mojej podstrony: http://www.zupagrzybowazpieczarkami.pl/z-serem-goralskim.pl – wtedy Google zrozumie, że strona “z-oscypkiem.pl” ma teraz nowy adres i nie powinien już wyświetlać starego adresu w swoich wynikach wyszukiwania. A co więcej – jest to ta sama podstrona co kiedyś.
Dlaczego jest to takie ważne?
Dlatego, że poza poprawieniem wyświetlena adresów strony w SERP (Search Engine Result Page(s)), Google uaktualni też inne meta-informacje związane z daną podstroną w swoim indeksie – w tym wszystkie informacje związane z pozycjonowaniem danej strony.
Przykładowo wyobraźmy sobie, że moja strona “z-oscypkiem.html” była fantastycznie wypozycjonowana w Google, i miała dziesiątki linków z innych stron – do tego stopnia, że pojawiała się jako pierwsza na hasło “oscypek” ;-) Co stanie się z nią gdy Google zespideruje ją z nagłówkiem 302? Nowa strona “z-serem-goralskim.pl” nie będzie dziedziczyć tego samego poziomu wypozycjonowania co stara! Nie będzie się więc już tak dobrze pozycjonować na hasło oscypek jak poprzednio. Jeśli jednak nowa strona zostanie zespiderowana z nagłówkiem 301, Google przeniesie caly “PageRank” ze starego adresu na nowy – tak, że nowy adres “z-serem-goralskim.pl” będzie pozycjonować się równie dobrze jak stary – a o to nam przecież chodzi..!
Nagłówek 301 jest więc tak ważny w SEO ponieważ jest pierwszą linią obrony przed niepotrzebnym traceniem PageRank i innych meta-informacji dot. poziomu wypozycjonowania podstron w ramach naszego serwisu. Powinien być stosowany wszędzie tam, gdzie adres już istniejącej podstrony zmienia się – ale my nadal chcemy wykorzystać PageRank, link-juice itp. dot. danej podstony…
Na koniec pozostaje pokazać jak wykonać przekierowanie 301 w praktyce. Można to zrobić na dwa sposoby – pierwszy to “ręczne” ustawienie nagłówka np. za pomocą:
… PHP:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.zupagrzybowazpieczarkami.pl/z-serem-goralskim.pl");
… lub ASP:
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.zupagrzybowazpieczarkami.pl/z-serem-goralskim.pl"
Response.End
Gdy jednak przekierowanie dotyczy całej grupy podstron – np. gdy zmianie uległa nazwa folderu – wtedy łatwiej jest się skonfigurować przekierowania na poziomie pliku .htaccess np.
RewriteRule ^zupy/(.*) /nalewki/$1 [L,R=301]
Jeśli macie uwagi lub pytania dot. tego posta to piszcie proszę w komentarzach – chętnie na wszystkie odpisze..!