Przekierowania stron w SEO

Przekierowania w przypadku dowolnego serwisu ogrywają istotną rolę. Pozwalają one na przeniesienie odwiedzającego w miejsce, które chcemy mu pokazać. Przekierowania w serwisie mogą mieć charakter ręcznych lub automatycznych.

W przypadku dowolnego serwisu przekierowanie odwiedzającego odwołującego się strony lub zasobu można zrealizować na kilka sposobów:

  • przez odnośnik do innej strony,
  • poprzez znacznik Meta Refresh,
  • poprzez ramkę,
  • z wykorzystaniem JavaScript (lub Flash i podobne),
  • z wykorzystaniem usług serwera lub języka programowania z wysłaniem odpowiedniego kodu odpowiedzi.

W dalszej części tekstu zostaną one opisane bardziej szczegółowo.

Przekierowanie przez odnośnik do innej strony

Odnośnik do innej strony może być realizowany poprzez link HTML lub formularz. W każdym z przypadków przekierowanie wymaga działania po stronie odwiedzającego stronę. Może przejść na inną stronę tylko wtedy kiedy kliknie on w link lub przycisk formularza.

<a href="http://www.trajdos.pl"
rel="me">trajdos.pl</a>

Tego typu przekierowanie można uznać za przekierowanie ręczne.

<form action="/potwierdz/" method="post">
...
<input type="submit" value="Wyślij" />
...
</form>

Nie będę wyjaśniał jakie podstawowe zastosowanie mają linki i formularze bo na tym poziomie powinien to wiedzieć każdy.

Przekierowanie poprzez znacznik Meta Refresh

Przekierowanie Meta Refresh jest dość często występujące i często wykorzystywane błędnie.  Pozwala on na określenie czasu wyrażonego w sekundach oraz strony docelowej. Po upłynięciu czasu użytkownik jest przenoszony na wskazaną stronę. Jeśli strona nie będzie wskazana zostanie odświeżona aktualnie przeglądana.

<meta http-equiv="refresh" 
content="5; url=http://www.trajdos.pl/"/>

Wyszukiwarki nie powinny mieć problemu ze zrozumieniem tego znacznika, ale jego używanie niesie za sobą zagrożenia, na przykład:

  • mogą być wyszukiwarki, które go zignorują i zostaną na stronie, na którą trafiły. Meta refresh jest w końcu ustawiany po to, żeby przejść dalej.
  • jeżeli meta refresh będzie na stronie głównej dostępnej po wpisaniu adresu domeny i będzie służyło do przenoszenia na stronę główną z adresem to wszystkie linki bezpośrednio wskazujące na taką stronę nie będą przekazywały domenie odpowiednio swojej siły.
  • może zablokować wykonanie kodu śledzącego np. Google Analytics  jeśli przekierowanie nastąpi przed jego uruchomieniem przez co wizyta nie zostanie prawidłowo przypisana do źródła odwiedzin, ale będzie potraktowana jako albo odesłanie z serwisu, na którym jest już użytkownik lub wejście bezpośrednie (dodatkowe okoliczności mogą mieć tutaj wpływ na to co zrobi GA w konkretnym serwisie). Kod Google Analytics jako stronę poprzedzającą zobaczy stronę w domenie, w której znajduje się już użytkownik.

Meta refresh można przede wszystkim stosować do odświeżania bieżącej strony lub jeśli jest ono uzupełnieniem linków.

Na przykład w trakcie pobierania plików w serwisie dobreprogramy.pl użytkownik trafia na stronę programu, po kliknięciu przycisku Pobierz przechodzi na stronę pobierania.

Przykład przekierowania do pliku na stronie pobierania w serwisie dobreprogramy.pl
Strona pobierania w serwisie dobreprogramy.pl

W kodzie HTML zaszyty jest znacznik meta refresh przenoszący do zasobu, ale ponieważ jest to plik wyskakuje okienko pobierania, a użytkownik nadal jest na stronie pobierania.

Odwiedzający ma też możliwość pobrania pliku ręcznie na wypadek gdyby przekierowanie meta nie zadziałało (można je zablokować w przeglądarce).

<meta http-equiv="Refresh" content='0; URL=http://download.dobreprogramy.pl/13271/x86'>

W tym wypadku wykorzystanie znacznika meta refresh jest uzupełnieniem linku do pliku. Jeśli z jakiegoś powodu automatycznie nie pojawi się okienko pobierania pliku to ma on ciągle dostęp do linku prowadzącego bezpośrednio do niego.

Przekierowanie poprzez ramkę

To co jest w ramach HTML nie jest traktowane jako część przeglądanej strony. Robot wyszukiwarki stronę umieszczoną w wyszukiwarce będzie traktował jako osobny twór i doda go do swojej kolejki indeksowania.

<frameset rows="100%">
<frame src="http://www.trajdos.pl/">
</frameset>
...

Sytuacja ta jest najczęściej spotykane w dwóch przypadkach:

  • strona A osadza poprzez ramkę stronę B i w ten sposób powoduje przekierowanie na nią,
  • ustawiając domenę nie jest ona przypisana do hostingu poprzez serwer DNS, a jedynie wskazanie serwera np. jego domeny w ramach domeny firmy hostingowej.

Najlepiej unikać takich rozwiązać. Poza sytuacją kiedy chcemy na stronie wyświetlić coś czego nie chcemy traktować jako części swojej strony. Musimy jednak przy tym pamiętać, że wyszukiwarki zauważą sam fakt udostępniania takiej treści i jeśli prezentuje ona wątpliwą jakość może to wpłynąć na ocenę serwisu, który taką ramkę zawiera.

Przekierowanie z wykorzystaniem JavaScript (lub Flash i podobne)

Skupię się tylko na przekierowaniach realizowanych za pośrednictwem JavaScript, bo te najczęściej można spotkać w przypadku automatycznych choć zdarzają się też elementy nawigacyjne, które korzystają z JavaScript.

<script type="text/javascript"> 
location.href="http://www.trajdos.pl"; 
</script>

W przypadku Flash najczęściej są to przekierowania ręczne.

Należy unikać stosowania automatycznych przekierowań opartych o JavaScript ponieważ roboty mogą ich nie wykonać. Mimo, że potrafią je czytać to ich nie wykonują. W skrócie pozostaną na stronie, która zawiera takie przekierowanie. Jeśli będzie to zabieg celowy służący oszukaniu algorytmu wyszukiwarki niewykluczone jest, że kiedyś strona taka otrzyma karę.

W przypadku przekierowań ręcznych zalecane jest ich stosowanie wtedy kiedy zależy nam na tym, żeby roboty ich nie zauważyły. O tym kiedy warto je stosować można napisać cały wpis i tak pewnie kiedyś zrobię.

Przekierowanie z wykorzystaniem usług serwera lub języka programowania z wysłaniem odpowiedniego kodu odpowiedzi

W przypadku przekierowań serwerowych mogą być one realizowane na dwa sposoby. Za pośrednictwem narzędzi udostępnianych przez serwer lub po prostu przez język programowania, w którym zrealizowany jest serwis internetowy.

W przypadku rozwiązań serwerowych dominuje Apache oferujący moduł mod_rewrite, który za pośrednictwem pliku .htaccess pozwala na na przekierowanie dowolnego żądania do dowolnego wskazanego zasobu. Ze względu na to, że najczęściej mam kontakt z tym środowiskiem to zarówno w tym tekście jak i w kolejnych będę bazował na przykładach opartych o .htaccess.

RewriteRule 
(.*) http://www.trajdos.pl/$1 
[R=301,L]

W przypadku języków programowania tak naprawdę możliwości przekierowania są nieograniczone. Każdy normalny język musi oferować takie możliwości.

<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.trajdos.pl/');
header('Connection: close');
exit();
?>

Stosowanie rozwiązania serwerowego ma przewagę nad rozwiązaniem pod stronie języka programowania, ponieważ pozwala przekierować odwiedzającego zanim zacznie generować się strona. Przerzucenie odpowiedzialności za przeniesienie użytkownika na język programowania powoduje zwiększenie ilości wykorzystywanych zasobów, co w przypadku dużych serwisów może mieć istotne znaczenie.

W ramach protokołu http dostępne są następujące typy przekierowań:

  • Przekierowanie 300 Multiple Choices — stosowane wtedy kiedy przekierowanie oferuje kilka wariantów np. różne wersje językowe. Nie stosowałem tego nigdy, więc nie będę się mądrzył na jego temat.
  • Przekierowanie 301 Moved Permanently — przekierowanie na stałe, kolejne żądania powinny być kierowane do wskazanej przez przekierowanie strony.
  • Przekierowanie 302 Found – strona znajduje się aktualnie w innym miejscu, przekierowanie ma charakter tymczasowy w związku z czym kolejne żądania nadal powinny być do pierwotnego adresu. W większości przypadków jest to domyślny kod jeśli nie zostanie ustawiony inny.
  • Przekierowanie 303 See Other – odpowiedź na żądanie znajduje się pod innym adresem. Ten typ przekierowań jest zalecany dla zapytań wykonywanych z wykorzystaniem metody POST.
  • Przekierowanie 304 Not Modified – w odpowiedzi na kryteria przesłane przez klienta zasób nie zmienił się (np. przeglądarka pyta o datę ostatniej modyfikacji zasobu w celu sprawdzenia czy musi pobierać nowszą wersję)
  • Przekierowanie 305 Use Proxy – do zasobu należy się odwołać poprzez wskazany serwer proxy. Nie stosowałem go, bo nie miałem przypadku, który by tego wymagał.
  • Przekierowanie 306 – nie jest aktualnie używane.
  • Przekierowanie 307 Temporary Redirect — czasowe przekierowanie na inny adres. Zamiast niego zwykle stosowane jest 302.

W SEO najczęściej spotykane są przekierowania 301 i 302. I to na nich skupiają się wszelkie prace. Analizując strony można też zaobserwować kod 304.

Uwaga! Należy minimalizować ilość przekierowań jakie wystąpią w sekwencji. Najlepiej jeśli jest tylko jedno przekierowanie. Dwa lub przekierowania to już bardzo dużo i należy tak postępować tylko kiedy nie da się tego uniknąć. Szczególnie, że część przeglądarek może mieć limity, które przy zbyt dużej ilości przekierowań będą przerywać cały proces informując internautę, że ilość przekierowań jest zbyt duża.

Podsumowanie

Stosowanie przekierowań jest zjawiskiem powszechnym. W serwisach internetowych stosowane powinny być dwa typy przekierowań:

  • Ręczne – wymagające interakcji ze strony użytkownika – mogą być one realizowane poprzez zwykłe linki lub przyciski HTML oraz przez elementy niestandardowe, które po kliknięciu przenoszą użytkownika na nowe miejsce.
  • Automatyczne – wykonują się bez udziału użytkownika – w tym wypadku powinny być stosowane przekierowania serwerowe, w tym te realizowane przez język programowania, które przesyłają do przeglądarki odpowiedni kod informujący o typie przekierowania.

Wiedza z zakresu rozumienia mechaniki działania przekierowań i odpowiedniego ich doboru to podstawy SEO. Pozwala ona na uniknięcie wielu sytuacji, które mogą powodować utraty ruchu szczególnie tego z naturalnych wyników wyszukiwania.

4 myśli nt. „Przekierowania stron w SEO”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *