Przekierowanie 301 to mechanizm, który przenosi użytkownika z jednego adresu URL na inny (np. na adres na innym serwerze lub w innym katalogu na tym samym serwerze). Z perspektywy pozycjonowania strony WWW w wyszukiwarkach jest to najbardziej zalecany sposób realizacji takiego przekierowania.
SPIS TREŚCI
- Więcej informacji o przekierowaniu 301 w htaccess
- Jak ustawić standardowe przekierowanie 301 w pliku .htaccess?
- Jak ustawić przekierowanie 301 w Panelu klienta az.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
Więcej informacji o przekierowaniu 301 w htaccess
Kod odpowiedzi 301 oznacza „Moved Permanently”, czyli trwałe przeniesienie zasobu. Przekierowanie 301 należy stosować m.in. wtedy, gdy kilka domen prowadzi do tej samej witryny. Dzięki niemu wskazujemy, która domena ma być adresem głównym serwisu, a pozostałe kierujemy właśnie na ten adres.
Przy takim ustawieniu wyszukiwarki (np. Google, Yahoo, Bing) nie obniżają wartości (tzw. „mocy”) linków prowadzących do strony. Jeśli jednak nie zastosujemy przekierowania 301, treści dostępne pod różnymi domenami są interpretowane jako odrębne witryny, a „siła linków” rozkłada się między nimi. W efekcie pozycja strony w wynikach wyszukiwania może ulec pogorszeniu.
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 az.pl?
Kliknij tutaj, aby przejść do instrukcji konfiguracji przekierowania typu 301 w Panelu administracyjnym az.pl
Wymuszanie adresu z przedrostkiem www lub bez niego
Jeżeli chcesz przekierować wersję domeny bez przedrostka „www.” na tę samą domenę z przedrostkiem „www.”, konfiguracja wygląda bardzo podobnie. Szczegółowe instrukcje dla tego typu przekierowania znajdują się poniżej.
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 az.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]
