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
- Przekierowanie 301 a przenoszenie strony
- Przekierowywanie 301 podstron
- Przekierowanie 301 z http na https
- Przekierowanie 301 z https na http
- Podsumowanie
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:
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:
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ę.
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:
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):
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:
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.