Uptime: 99.892%
Strony WWW:
Nowe strony WWW dzisiaj:
Z SEOHOST korzysta już ponad 90 000 Użytkowników! Czytaj więcej Jak Polacy marnują 164 miliony rocznie! Czytaj więcej Pierwszy taki film na YouTube od SEOHOST! Czytaj więcej Pełna transparencja: uptime naszej infrastruktury Czytaj więcej Wywiad z naszym CEO na bezprawnik.pl Czytaj więcej SEOHOST.pl zdobywa 2 miejsce w rankingu NASK. Czytaj więcej Uwaga: kolejna próba phishingu! Czytaj więcej Dlaczego warto migrować do SEOHOST? Czytaj więcej
Redakcja SEOHOST.pl
Redakcja SEOHOST.pl
30 Czerwca 2020
4 minuty

Przekierowanie 301 w .htaccess – praktyczne przykłady

Przekierowanie 301 to stałe przekierowanie adresu URL, które mówi wyszukiwarkom i przeglądarce, że dana strona na stałe zmieniła lokalizację. Dzięki kilku prostym regułom w pliku .htaccess możesz ujednolicić adres z www/bez www, przenieść stronę na nową domenę, przekierować wybrane podstrony czy wymusić używanie https – bez utraty ruchu i wypracowanej pozycji SEO.

Ustawianie przekierowania 301 bez www i na www

W obu wariantach należy zamienić „nazwadomeny” na swoją domenę. Klasyczny przypadek to sytuacja, w której chcesz, aby użytkownicy zawsze trafiali na jedną, spójną wersję adresu – np. tylko z www albo tylko bez www.

Jako przykład może nam posłużyć przypadek, gdy chcemy przekierować adres nazwadomeny.pl na www.nazwadomeny.pl.

1. Przekierowanie 301 w .htaccess z nazwadomeny.pl na www.nazwadomeny.pl:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^nazwadomeny.pl$
RewriteRule ^(.*) http://www.nazwadomeny.pl/$1 [QSA,L,R=301]

W tym przypadku natomiast możemy posłużyć się wpisem, by dokonać odwrotnego zabiegu – gdy www.nazwadomeny.pl chcemy przekierować na nazwadomeny.pl.

2. Przekierowanie 301 w .htaccess z www na wersję bez www:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.nazwadomeny.pl$
RewriteRule ^(.*) http://nazwadomeny.pl/$1 [QSA,L,R=301]

Zmiany powinny zostać dokonane w pliku .htaccess znajdującym się w folderze z Twoją stroną (najczęściej w katalogu głównym domeny). Jeżeli Twoja strona działa już w wersji https, w powyższych przykładach możesz użyć https:// zamiast http://.

Przekierowanie 301 a przenoszenie strony

Przekierowania 301 bardzo pomagają podczas prac nad przenoszeniem strony na nowy adres – np. gdy zmieniasz domenę z stara-domena.pl na nowa-domena.pl. W takim scenariuszu z pomocą przychodzi plik .htaccess.

Pamiętajmy też, że samo przekierowanie nie jest tym samym co przeniesienie domeny z serwera na serwer. Używamy go np. w przypadku, gdy zmianie ulega adres strony, ale ruch z wyszukiwarki i starych linków ma trafić pod nową domenę.

Po skopiowaniu plików i upewnieniu się, że pod naszym nowym adresem wszystko działa poprawnie, możemy usunąć wszystkie pliki ze starego serwera i zmodyfikować bądź utworzyć plik o nazwie .htaccess, a w nim umieścić następujące reguły:

Przypomnienie: po skopiowaniu poniższych reguł nie zapomnij zamienić „twoja_domena.pl” na swoją domenę.

RewriteEngine On
RewriteBase /

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

Jeśli planujesz większą migrację serwisów lub testujesz przekierowania na środowisku testowym, dobrym rozwiązaniem będzie wydajny serwer VPS do bezpiecznego testowania przekierowań 301 i migracji stron , dzięki któremu możesz spokojnie sprawdzać konfigurację zanim przeniesiesz ruch produkcyjny.

Przekierowywanie 301 podstron

Przy przekierowywaniu pojedynczych podstron (np. gdy zmieniasz ich adresy URL) radzimy zachować szczególną ostrożność – zwłaszcza wtedy, gdy w katalogu Twojej strony istnieje już plik .htaccess. Najlepiej zrobić jego kopię (zalecane), a następnie dokonać zmian – wtedy w razie potrzeby jesteśmy w stanie szybko przywrócić poprzednią wersję pliku.

Poniżej przedstawiamy przykład przekierowania kilku adresów:

RewriteEngine On
RewriteBase /

RewriteRule ^index.html$ http://www.twoja_domena.pl/ [R=301,L]
RewriteRule ^podstrona1.php$ http://www.twoja_domena.pl/nowapodstrona1.html [R=301,L]
RewriteRule ^podstrona2.php$ http://www.twoja_domena.pl/nowapodstrona2.html [R=301,L]

Objaśnienie reguł:

RewriteRule ^index.html$ http://www.twoja_domena.pl/ [R=301,L] – przekierowuje podstronę index.html na domenę główną twoja_domena.pl.
RewriteRule ^podstrona1.php$ http://www.twoja_domena.pl/nowapodstrona1.html [R=301,L] – przekierowuje podstronę o nazwie podstrona1.php na nową podstronę nowapodstrona1.html.
RewriteRule ^podstrona2.php$ http://www.twoja_domena.pl/nowapodstrona2.html [R=301,L] – ten wpis działa analogicznie jak linia wyżej, tylko dla innego adresu.

Pamiętaj: podczas przekierowywania musimy podać pełny adres wraz z http:// (lub https://), w innym przypadku przekierowanie może nie zadziałać zgodnie z oczekiwaniami.

Przekierowanie 301 z http na https

W tym przykładzie zakładamy, że posiadasz zainstalowany certyfikat SSL na swojej domenie i działa on poprawnie. W przypadku gdy certyfikat nie został poprawnie zainstalowany, a strona jest dostępna jednocześnie pod adresami http i https, istnieje ryzyko, że ta sama treść będzie indeksowana pod dwoma adresami URL.

Aby uniknąć indeksowania duplikatów, musimy powiedzieć robotom wyszukiwarek, że treść na naszej stronie (i na wszystkich podstronach) jest dostępna pod nowymi, szyfrowanymi adresami https. Do tego właśnie służy przekierowanie 301 w pliku .htaccess.

Strony oparte o systemy zarządzania treścią (CMS) takie jak WordPress, Drupal czy inne, zwykle tworzą własny plik .htaccess, dlatego posłużymy się nim. Aby dokonać przekierowania, umieść w nim następujące reguły (najlepiej na początku pliku, przed innymi regułami):

RewriteEngine On # najprawdopodobniej znajduje się już w pliku

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.twoja_domena.pl/$1 [R=301,L]

Przekierowanie 301 z https na http w pliku .htaccess

Analogicznie, jeśli z jakichś przyczyn chciałbyś wrócić do wersji http (np. testowo, na środowisku developerskim), możesz tego dokonać, dodając poniższe reguły do swojego pliku .htaccess:

RewriteEngine On # najprawdopodobniej znajduje się już w pliku
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://www.twoja_domena.pl/$1 [R=301,L]

Podsumowanie

W tym artykule zobaczyłeś, jak za pomocą pliku .htaccess dokonać najczęściej wykorzystywanych przekierowań 301 – z www i bez www, na nową domenę, dla wybranych podstron oraz między http i https. Możesz rozbudować powyższe przykłady o własne reguły, jednakże warto zachować ostrożność i świadomie dokonywać zmian, najlepiej po wykonaniu kopii zapasowej pliku .htaccess.

Ważne: każda zmiana w pliku .htaccess może od razu wpłynąć na działanie całej strony. Przed edycją zrób kopię pliku, testuj nowe reguły krok po kroku (np. najpierw na jednej podstronie), a po wdrożeniu sprawdź przekierowania w przeglądarce oraz narzędziach typu „header checker”. Dzięki temu unikniesz pętli przekierowań 301, błędów 500 i utraty ruchu z wyszukiwarki.

Czy udało Ci się rozwiązać problem?
Nie znalazłeś odpowiedzi na swoje pytanie?