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ć.
Jak zrobić poprawne przekierowanie 301?
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.
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 301 www i bez www
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]
Przekierowanie domeny głównej na subdomenę lub z bez www na www
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:
- Mod rewrite – przyjazne linki Mod Rewrite to funkcja serwera Apache – pozwala ona na...
- Windows 7 RC Tym razem oficjalnie … wersja Release Candidate został już ukończona....
- Mobilna wersja Mozilli już dostępna – Fennec 1.0 Beta 1 Po długo oczekiwanej zapowiedzi, w końcu pojawiła się mobilna wersja...
- Przeglądarka Google Chrome Firma Google postanowiła dołączyć do grupy firm oferujących przeglądarki internetowe....
- CMS – nowe podejście do tworzenia stron internetowych CMS czyli System zarządzania treścią ( z angielskiego – Content...
- Tablet od Apple – iPad W dniu wczorajszym CEO firmy Apple zaprezentował na konferencji nowe...


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.