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
- Jak ustawić standardowe przekierowanie 301 w pliku .htaccess?
- Jak ustawić przekierowanie 301 w Panelu administracyjnym home.pl?
- Wymuszanie adresu domeny z przedrostkiem www lub bez niego.
- Wymuszanie adresu domeny z przedrostkiem „https://”.
- Dlaczego zmienna %{SERVER_PORT} nie działa?
- Inne popularne przykłady przekierowania typu 301.
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?
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
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://
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]