Posiadając stronę czy też sklep internetowy, bardzo często napotykamy na sytuacje, w których z różnych względów konieczna jest zmiana adresu lub wielu adresów URL na inne. W przypadku gdy zmieniamy adres podstrony lub całej domeny, która generuje już pewien ruch w wyszukiwarce, istotne jest wykonanie tzw. przekierowania 301.
Czym jest przekierowanie 301 i w jakim celu się je stosuje?
Przekierowanie 301 jest specjalną instrukcją dla serwera oraz dla robotów wyszukiwarek, która wskazuje, że stary adres URL uległ zmianie (i że zmiana ta jest stała). Co istotne, z perspektywy pozycjonowania, przekierowanie umożliwia przeniesienie autorytetu danej podstrony (czy też domeny) na nowy adres. Dzięki temu po zmianie adresów zachowamy wypracowane dotychczas efekty pozycjonowania. Z perspektywy użytkownika, dzięki zastosowaniu przekierowania, osoby korzystające ze starego adresu URL trafią na nową podstronę.
Kiedy stosujemy przekierowanie 301?
Jednym z podstawowych zastosowań przekierowania 301 jest ustawienie tzw. kanonicznej wersji domeny. Dla wyszukiwarki adresy http://nazwadomeny.pl oraz http://www.nazwadomeny.pl są dwoma oddzielnymi „bytami”. Dlatego też, aby uniknąć niekorzystnego zjawiska duplikacji treści zaleca się przekierowanie wszystkich wersji adresu witryny do jednej (wybranej) postaci kanonicznej.
Którą wersję powinniśmy wybrać? Przeważnie tą, która w większej części jest już zaindeksowana w wyszukiwarce.
Aby wykonać przekierowanie strony z adresów z przedrostkiem www na adresy bez www należy dodać odpowiednią regułę w pliku .htaccess na serwerze, na którym znajduje się nasza strona:
RewriteCond %{HTTP_HOST} ^www.domena.pl [NC] RewriteRule ^(.*)$ http://domena.pl/$1 [L,R=301]
Analogicznie, jeśli chcemy aby kanoniczną wersją naszego adresu była wersja z www powinniśmy użyć poniższej reguły:
RewriteCond %{HTTP_HOST} ^domena.pl [NC] RewriteRule ^(.*)$ http://www.domena.pl/$1 [L,R=301]
Alternatywnie przekierowanie strony możemy również wykonać np. za pomocą skryptu PHP. Przekierowanie z wersji „z www” na „bez www” będzie miało w takim wypadku następującą postać:
<?php if(substr($_SERVER['HTTP_HOST'], 0, 3)!='www') { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.domena.pl".$_SERVER['REQUEST_URI']); header("Connection: close"); exit; } ?>
W przypadku przekierowania w drugą stronę, kod wygląda następująco:
<?php if(substr($_SERVER['HTTP_HOST'], 0, 3)=='www') { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://vestigio.pl".$_SERVER['REQUEST_URI']); header("Connection: close"); exit; } ?>
Jak zrobić przekierowanie 301 ze starej domeny na nową
Przekierowanie 301 możemy też wykorzystać w sytuacji kiedy zmianie ulega domena, pod którą dostępna będzie nasza strona lub sklep. Aby przekierować starą domenę na nową należy skorzystać z następującej reguły w pliku .htaccess:
RewriteEngine on RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
Przekierowanie 301 pojedynczej strony:
W przypadku gdy chcemy przekierować konkretną podstronę na nowy adres, możemy skorzystać z następującej reguły:
Redirect 301 /stara-podstrona.php /nowa-podstrona.php
Jak sprawdzić rodzaj i poprawność przekierowania?
Aby sprawdzić rodzaj przekierowania, wystarczy skorzystać z dowolnego narzędzia analizującego nagłówki wysyłane do przeglądarki. Przykładem takiego narzędzia jest testuri.org.
W polu Page URI/URL wystarczy wpisać adres podstrony, którą chcemy sprawdzić, a następnie kliknąć przycisk Check page.
Po chwili zobaczymy wyniki testu razem z kodem odpowiedzi serwera.
Podsumowanie
Przekierowanie 301 jest niezwykle istotną instrukcją wykorzystywaną wtedy gdy zmianie ulegają adresy URL podstron w obrębie danego serwisu. Dzięki zastosowaniu przekierowania strony nie tylko zyskujemy pewność, że użytkownicy odwiedzający naszą stronę trafią pod właściwy adres, ale również umożliwiamy przepływ mocy (autorytetu) ze starego adresu na nowy.
Jeśli zmieniacie adresy ważnych podstron w obrębie swojej strony, zawsze pamiętajcie więc o wykonaniu odpowiedniego przekierowania.
Do sprawdzania poprawności przekierowań polecam również HTTP Status Code Checker. Fajne i wygodne w użyciu narzędzie 🙂
a podstronę na główną to po prostu pełny adres pisać tak ?
Jeśli chcesz przekierować daną podstronę na stronę główną (w obrębie tej samej domeny) to wystarczy tak:
Redirect 301 /stara-podstrona.html http://nazwadomeny.pl/
lub tak:
RewriteEngine on
RewriteRule ^stara-podstrona.html$ / [R=301,L]
A jak powinno wyglądać przekierowanie, jeżeli mieliśmy na stronie forum internetowe, które już nie istnieje a chcemy przekierować z niego wszystkie zaindeksowane linki na stronę główną. Linki są typu:
http://www.strona.pl/forum/viewtopic.php?f=25&t=4797
te parametry 25 i 4797 są różne.
Dziękuję za pomoc.
Witam, jak wykonać przekierowanie kilkunastu stron, gdzie zmienił mi się tylko „środek” linków.
np:
https://www.strona.pl/serwis1/strona1
https://www.strona.pl/serwis1/strona2
https://www.strona.pl/serwis1/strona3
https://www.strona.pl/serwis1/strona4
https://www.strona.pl/serwis1/strona5
i przekierować je na:
https://www.strona.pl/serwis0/strona1
https://www.strona.pl/serwis0/strona2
https://www.strona.pl/serwis0/strona3
https://www.strona.pl/serwis0/strona4
https://www.strona.pl/serwis0/strona5
Dziękuję za wskazanie.
Znalazłem rozwiązanie:
RewriteRule ^serwis1(.*)$ /serwis0/$1 [R=301,NC,L]
Czy ktoś pomoże w kwestii kodu do przekierowania kilkunastu stron aby działało w poniższy sposób (bez /produkty/?
https://www.strona.pl/produkt/strona1
https://www.strona.pl/produkt/strona1/strona1a
https://www.strona.pl/produkt/strona2
https://www.strona.pl/produkt/strona2/strona2a/strona2b
…..
przekierowanie na
https://www.strona.pl/strona1
https://www.strona.pl/strona1/strona1a
https://www.strona.pl/strona2
https://www.strona.pl/strona2/strona2a/strona2b
Pewnie należy zmienić kod z postu wcześniejszego jednak nie jestem biegły w tych sprawach. Będę zobowiązany
Co do końcowego ukośnika (slasha) w adresie URL domeny… przekierowywać na adresy Z ukośnikiem, czy BEZ?