Przekierowanie 301 w pliku .htaccess

Przekierowanie 301 jest to sposób na przekierowanie użytkownika z jednego adresu URL na inny (np. znajdujący się na zewnętrznym serwerze lub znajdujący się na tym samym serwerze, ale w innej lokalizacji). Jest to najlepsze rozwiązanie z punktu widzenia pozycjonowania danej strony WWW w wyszukiwarkach.

SPIS TREŚCI

Kod 301 oznacza „Moved Permanently”, czyli trwale przeniesiony. Przekierowanie 301 powinniśmy stosować w przypadku, gdy posiadamy kilka domen, które wskazują na tą samą stronę WWW. Za pomocą przekierowania 301 decydujemy, która domena jest głównym adresem strony WWW (pozostałe domeny kierujemy na adres główny).

Przy tym rozwiązaniu wyszukiwarki internetowe (np. Google, Yahoo czy Bing) nie zmniejszają wartości (siły) linków, które znajdują się na danej stronie WWW. Natomiast bez przekierowania 301 wyszukiwarki traktują treść znajdującą się pod poszczególnymi domenami jako różne strony WWW, a tzw. „siła linków” jest rozproszona. Może to spowodować zmniejszenie pozycji strony WWW w wynikach wyszukiwania.

Jak ustawić przekierowanie 301 w pliku .htaccess?

Aby wykonać przekierowanie typu 301 polegające na zmianie domeny ze starej na nową, należy w katalogu (w którym umieszczona jest strona WWW) umieścić plik .htaccess o składni wzorowanej na poniższej:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domena-stara\.pl [NC]
RewriteRule (.*) http://domena-nowa.pl/$1 [R=301,L]

Jak ustawić przekierowanie 301 w Panelu klienta home.pl?

Kliknij tutaj, aby przejść do instrukcji konfiguracji przekierowania typu 301 w Panelu administracyjnym home.pl

Wymuszanie adresu z przedrostkiem www lub bez niego

Jeśli chcesz przekierować domenę bez przedrostka „www.” na tą samą domenę, która zawiera przedrostek „www.” to operacja jest analogiczna. Instrukcje dla tego typu przekierowania znajdziesz poniżej.
WAŻNE! Należy pamiętać, że „www.twojadomena.pl” i „twojadomena.pl” to dla wyszukiwarki 2 różne strony WWW. W sieci Internet przyjęto, że przed nazwą domeny wstawiamy przedrostek „www.” (w rzeczywistości nie jest on potrzebny). Aby nie stracić dobrej pozycji w wynikach wyszukiwania warto zdecydować w jakiej formie wolimy przedstawiać adres naszej strony WWW.
Jeśli zdecydujesz się na formę adresu, która zawiera przedrostek „www.”, to skorzystaj z poniższego kodu:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Jeśli zdecydujesz sie na formę adresu, która nie zawiera przedrostka „www.”, to należy skorzystać z takiego zapisu:

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

Wymuszanie adresu domeny z przedrostkiem  https://

Przypadek ten jest bardzo ważny dla użytkowników korzystających z certyfikatów SSL. Za pomocą poniższego kodu możesz wymusić adres z przedrostkiem „https://”, który stosowany jest do bezpiecznego szyfrowanego połączenia z serwerem. Więcej informacji jak uruchomić certyfikat SSL na stronie WWW znajdziesz tutaj.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Dlaczego zmienna %{SERVER_PORT} nie działa?

Na serwerach w home.pl zmienna: %{SERVER_PORT} nie jest obsługiwana, zamiast niej należy stosować: %{HTTPS}, która została użyta w powyższych przykładach (np. przy wymuszaniu adresu domeny z przedrostkiem https lub przy wymuszaniu adresu z przedrostkiem www lub bez niego).

Inne popularne przykłady przekierowań

Zabezpieczenie przed linkowaniem obrazków:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?twojadomena\.pl [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(jpe?g|gif|bmp|png)$ /obrazki/kradziez.png [L]

Przekierowanie wielu domen na jeden adres:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domena1.pl$ [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domena2.pl$
RewriteRule ^(.*)$ http://www.domena.pl/$1 [R=301,L]

Przekierowanie z jednego adresu do drugiego w ramach tej samej domeny:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?twojadomena\.pl$ [NC]
RewriteRule ^adres1(\/.*)?$ http://www.twojadomena.pl/adres2 [R=301,L]

Przekierowanie z każdej subdomeny na jedną domenę

Poniższa reguła spowoduje, że cały ruch skierowany, np. na nieistniejące subdomeny „test.twojadomena.pl” lub „cxzcxzcxz.twojadomena.pl” zostanie przekierowany na adres: „https://twojadomena.pl”. Reguła przekieruje również ruch z wpisywanym „www.” na  „bez www.”

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*).twojadomena.pl
RewriteRule ^(.*)$ https://twojadomena.pl/$1 [R=301,L]

Przekierowanie z jednego adresu na drugi w ramach tej samej domeny za pomocą REQUEST_URI

Poniższa reguła spowoduje, że cały ruch z adresu: „test.twojadomena.pl/adres1” zostanie przekierowany na adres: „test.twojadomena.pl/adres2”

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?test\.twojadomena\.pl$ [NC]
RewriteCond %{REQUEST_URI} ^/adres1/
RewriteRule (.*) /adres2 [R=301,L]

Poniższa reguła spowoduje, że cały ruch z adresu: „test.twojadomena.pl/adres1″ zostanie przekierowany na adres: „test.twojadomena.pl/adres1/adres2″

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?test\.twojadomena\.pl$ [NC]
RewriteCond %{REQUEST_URI} ^/adres1/
RewriteCond %{REQUEST_URI} !adres2
RewriteRule (.*) $1/adres2 [R=301,L]

Kolejny przykład przekierowania ze starego adresu na nowy adres w ramach tej samej domeny

RewriteEngine On
RewriteRule ^aktualnosci/([^/]*)\.html$ /aktualnosci/111-$1.html [L,R=301]
  • Czy artykuł był pomocny ?
  • Tak   Nie