Przekierowania 301 w pliku .htaccess

Jeśli nie wiesz jak wykonać przekierowanie 301 w .htaccess, z pewnością ten artykuł będzie dla Ciebie przydatny. W poniższym wpisie zebraliśmy najpopularniejsze typy przekierowań 301, które warto znać.

Ustawianie przekierowania 301 bez www i na www

W obu wariantach należy zamienić "nazwadomeny" na swoją domenę.

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 bez 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 gdzie www.nazwadomeny.pl chcemy przekierować na nazwadomeny.pl

2.Przekierowanie 301 w htaccess z www 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 naszą stroną.

Przekierowanie 301 a przenoszenie strony

Przekierowanie 301 pomagają podczas prac nad przenoszeniem strony na nowy adres, gdzie z pomocą przychodzi nam plik .htaccess. Pamiętajmy też, że samo przekierowanie nie jest tym samym co przeniesienie domeny z serwera na serwer. Używamy tego np. w przypadku gdy zmianie ulega adres strony.

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

Przypomnienie: po skopiowaniu poniższych reguł nie zapomnijmy zamienić "twoja_domena.pl" na naszą domenę :)

RewriteEngine On
RewriteBase /

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

Przekierowywanie 301 podstron

Przy przekierowywaniu podstron na przykład gdy zmieniamy ich adresy radzimy zachować szczególną ostrożność w przypadku gdy istnieje już plik htaccess w katalogu Twojej strony - należy wtedy zrobić jego kopię (zalecane przez nas) a następnie dokonać zmian - wtedy jesteśmy wstanie przywrócić kopię naszego pliku.

Poniżej przedstawiamy przykład:

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/ - 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 naszą nową podstronę "nowapodstrona1.html"
RewriteRule ^podstrona2.php$ http://www.twoja_domena.pl/nowapodstrona2.html - ten wpis jest analogiczny do linii wyżej.

Pamiętajmy! Podczas przekierowywania musimy podać pełny adres wraz z http:// w innym przypadku przekierowanie nie zadziała.

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 wraz z przekierowaniem w pliku .htaccess lub na poziomie aplikacji istnieje ryzyko jest indeksowana pod dwoma adresami - http i https. Aby uniknąć indeksowania tej samej treści pod dwoma różnymi adresami musimy powiedzieć algorytmowi Google, iż treść na naszej stronie jak i na wszystkich podstronach jest dostępna pod nowymi adresami. Aby tego dokonać możemy posłużyć się przekierowaniem 301 w pliku .htaccess.

Strony oparte o systemy zarządzania treścią(CMS) takie jak WordPress czy Drupal bądź inne tworzą na ogół swój własny plik .htaccess dlatego też posłużymy się nim. Aby dokonać przekierowania należy umieścić w nim następujące reguły:

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 jakiś przyczyn chciałbyś wrócić do wersji http, możesz jak najbardziej 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]

Podsumowując

W tym artykule dowiedziałeś się jak za pomocą pliku htaccess jak dokonać przekierowania 301. Możesz rozbudować powyższe przykłady o własne reguły jednakże radzimy zachować dozę ostrożności i świadomie dokonywać zmian. Mamy nadzieję, że niniejszy wpis pomógł Ci i jesteś wstanie wprowadzić samemu następujące zmiany :)