Przekierowanie 301 (Moved Permanently) służy do przekierowywania z jednego adresu internetowego na drugi. Jest bardzo często wykorzystywane przez webmasterów i pozycjonerów ponieważ jest poprawnie interpretowane zarówno przez przeglądarki, jak i roboty wyszukiwarek internetowych takich jak Google. Najczęściej przekierowanie 301 wykorzystuje się podczas przenoszenia serwisu z jednej domeny na drugą. Dzięki temu nie tracimy linków prowadzących do starej domeny, a robot wyszukiwarki jest przekierowywany na nową domenę i przenosi Page Rank.
Jednak nie jest to jedyne zastosowanie przekierowania 301. Często jest również wykorzystywane podczas optymalizacji witryny do ustawiania przekierowania z adresu z www na bez www i odwrotnie. Robi się to w celu przekierowania linków prowadzących do różnych wersji adres (www/bez www) na jeden przez nas wybrany. Powinno się na początku zdecydować jaki adres będziemy promować czy z www, czy bez i do wybranej wersji zamieszczać linki. Jednak ludzie mogą zamieszczać linki w obydwu wersjach więc warto takie przekierowanie ustawić.
Najlepiej użyć do tego pliku .htaccess, który wgrywa się do katalogu głównego na serwerze i stworzyć w nim następujący kod:
RewriteEngine On
RewriteRule ^(.*)$ http://www.nowy-adres.pl/$1 [R=301,L]
Nie wszystkie serwery obsługują plik .htaccess, większość darmowych serwerów nie obsługuje tego modułu. W takim wypadku możemy wykonać przekierowanie 301 w php.
Uwaga! W przypadku kopiowania i wklejania kodu php należy sprawdzić poprawność znaków typu ‘ .
< ?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.domena.pl'.$_SERVER['REQUEST_URI']);
header('Connection: close');
?>
Przekierowanie z www na bez www w .htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^domena.com [NC]
RewriteRule ^(.*)$ http://domena.com%{REQUEST_URI} [R=301,L]
Przekierowanie z wersji bez www na wersję z www w .htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.domena.com [NC]
RewriteRule ^(.*)$ http://www.domena.com%{REQUEST_URI} [R=301,L]
Poniższy kod można użyć zarówno jako alternatywny dla tego podanego powyżej jak i do przekierowywania z domeny głównej na subdomenę. W przypadku przekierowania z wersji bez www na wersję z www należy zamienić w kodzie wyrażenie subdomena na www.
Dokonywane w .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domena.pl
RewriteRule ^(.*)$ http://subdomena.domena.pl/$1 [R=301,L]
w php:
< ?php
if (substr($_SERVER['HTTP_HOST'], 0, 3) !=='subdomena') {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://subdomena.domena.pl'.$_SERVER['REQUEST_URI']);
header('Connection: close';);
}
?>
Zobacz tez:
Lipiec 26th, 2009 o 23:52
W przekierowaniu z domeny głównej na subdomenę za pomocą pliku .htaccess jest pewna nieścisłość. To polecenie nie dokona przekierowania w momencie wpisania adresu http://www.domena.pl. Całość powinna wyglądać następująco:
RewriteCond %{HTTP_HOST} ^domena.pl [OR]
RewriteCond %{HTTP_HOST} ^www.domena.pl
RewriteRule ^(.*)$ http://subdomena.domena.pl/$1 [R=301,L]
Można oczywiście zostawić pojedynczy warunek mając wyżej zadeklarowane przekierowanie „z www” do „bez www” ale działanie takie jest wysoce nieefektywne (serwer wykona 2 oddzielne przekierowania 301) a w przypadku znacznego obciążenia serwera może nawet zablokować wyświetlenie serwisu z błędem 500.
Należy dbać o optymalizację instrukcji zawartych w pliku .htaccess.
Lipiec 28th, 2009 o 20:13
Dziękujemy za zwrócenie uwagi, podane przez nas przekierowanie jest zaczerpnięte z publikacji internetowych, ale rzeczywiście może nie jest optymalne.
Luty 14th, 2010 o 20:24
Przydatne informacje. Tego szukałem
Marzec 22nd, 2010 o 19:17
u mnie pod chrome działa prawidłowo, tj. przekierowuje z http://www.pergolaa.pl/ na pergolaa.pl/, ale pod IE to nie działa, może trzeba coś dodać?
Marzec 22nd, 2010 o 20:58
hmm, a to jakaś stara wersja IE, dziwne, że Ci nie działa tylko w IE. Sprawdziłem twoją stronę w FF i u siebie w IE i działa normalnie.
Marzec 23rd, 2010 o 09:01
dla mnie też dziwne, bo już działa, może mimo ze pucowałem historie bez przerwy coś zostawało w pamięci…
Marzec 23rd, 2010 o 11:41
No, czasem tak to jest z tymi cache’ami itp.
Grudzień 28th, 2010 o 17:46
A czy można przekierować bloga
Styczeń 3rd, 2011 o 19:04
Jeżeli masz dostęp do ftp żeby edytować pliki to można przez htcaccess jeżeli obsługuje albo przez ftp, ale w przypadku Bloog’a pewnie nie masz dostępu.
Styczeń 9th, 2011 o 17:53
Witam,
Lepiej wpisać tak:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.stara.plRewriteRule ^(.*)$ http://www.nowa.pl/$1 [R=301,L]
czy tak jak tutaj podajecie:
RewriteEngine OnRewriteRule ^(.*)$ http://www.nowy-adres.pl/$1 [R=301,L]
Pozdrawiam
Styczeń 12th, 2011 o 18:46
Moim zdaniem lepsza jest druga wersja.
Marzec 11th, 2011 o 09:46
Serdecznie dziękuję- przydało się
Marzec 17th, 2011 o 08:27
Witam, proszę o o poradę:
Do tej pory jedna z moich stron funkcjonowała pod adresem „z www”. Po zmianie jej całej zawartości – po przerzuceniu plików za pomocą programu Dreamweaver – nastąpiła samoistna zmiana adresu na taki „bez www”. Jak mam powrócić do adresu „z”www”, co może być przyczyną zaistniałej sytuacji??
Po dołączeniu pliku .htaccess wyświetla mi się błąd serwera 500.
Proszę o pomoc.
Marzec 17th, 2011 o 11:52
Widocznie twój serwer nie obsługuje .htaccess – darmowy? Możesz zrobić przekierowanie 301 też w php, ale jeżeli dobrze zrozumiałem to teraz przekierowuje z wersji „z www” na wersję „bez www” to nie możesz zrobić drugiego zwrotnego przekierowania bo się zapętlą. Najprawdopodobniej gdzieś skrypt przekierowuje – musisz znaleźć gdzie.
Marzec 17th, 2011 o 13:12
Dziękuję Ci Adminie za wskazówki.
Nie, serwer nie jest darmowy, mam go w nazwa.pl. Sama stronka jest prościutka – jeden plik zaledwie, który przekierowuje na inną stronę (po prostu blokuję ten adres, by go ktoś inny o moim nazwisku nie podłapał. To jest annakarolak.com i on właśnie teraz jak widzisz widnieje bez tego www. Mnie po prostu zastanawia co się mogło stać, bo ta stronka od zawsze widniała w sieci z www, a teraz po wywaleniu starej zawartości z niej i wprowadzeniu tej nowej zawartości – po raz pierwszy za pomocą programu Dreamweaver – to się stało, zniknęło w tajemniczy sposób” www”.
A Ty Adminie mówisz chyba o skrypcie, który mógłby być w kodzie, tak? Otóż w tym kodzie nie mam żadnych skryptów, raptem jest tło i dwa linki.
Mógłbyś mi jeszcze coś pomóc w tej sprawie? Byłabym wdzięczna.
Marzec 17th, 2011 o 13:33
Ok, jak podałaś adres to ja już wszystko wiem
Otóż nie masz ustawionego żadnego przekierowania 301 obie wersje zarówno z www jak i bez www są dostępne – to co jest zaindeksowane zależy od linków jakie prowadzą do tej domeny i pewnie masz i takie z www, i takie bez.
Jeżeli .htaccess Ci nie działa to możesz sobie zrobić to przekierowanie w php, wtedy z czasem robot Google Ci to przeindeksuje.
Możesz też założyć sobie konto w Google i tam masz Narzędzia dla Webmasterów – dodajesz tam swoją domenę, potem weryfikujesz, żeby móc cokolwiek przy niej zmieniać. Następnie masz tam opcje „Ustawienia preferowanej domeny” i wybierasz sobie po prostu pożądaną wersję.
Pozdrawiam
Marzec 17th, 2011 o 17:42
No to ja założę jeszcze dziś konto w Google i zadziałam tam według Twych wskazówek.
Bardzo dziękuję Ci Adminie za pomoc!
(gdybym jeszcze coś nie wiedziała to jeszcze zgłoszę się po poradę do Ciebie)
Pozdrawiam Cię serdecznie!
Marzec 17th, 2011 o 17:53
Nie ma za co
Również pozdrawiam
Marzec 22nd, 2011 o 17:50
Witam,
a jak zrobić przekierowanie katalogu na subdomenę. Czyli
tak aby www. comfoline.pl/blog/ było kierowane na blog.comfoline.pl/
jeśli przekierowanie jest zrobione prawidłowo to po wpisaniu pierwszego
adresu w przeglądarce po załadowaniu powinien on się zmienić na prawidłowy url?
Pozdrawiam
Lipiec 8th, 2011 o 17:15
Pol, Ty nie pomyliłeś się? To nie działa u mnie
Grudzień 2nd, 2011 o 16:06
Czy znacznik /$1 ma być dodany po wpisaniu nowego adresu ? To jest podsumowanie – informacja o zakończeniu ?
Grudzień 2nd, 2011 o 16:18
To nie jest podsumowanie to chyba raczej zmienna oznaczająca wszystkie podstrony, pliki, katalogi pod domeną… ale nie jestem ekspertem