Subskrybuj:   Posty   |   Komentarze
RSS

Poprawne przekierowanie 301 – Jak zrobić przekierowanie 301

« starsze | nowsze »

Poprawne przekierowanie 301 – Jak zrobić przekierowanie 301

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:

Komentarze: 7

  1. Grzesiu Powiedział:

    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.

  2. admin Powiedział:

    Dziękujemy za zwrócenie uwagi, podane przez nas przekierowanie jest zaczerpnięte z publikacji internetowych, ale rzeczywiście może nie jest optymalne.

  3. katko Powiedział:

    Przydatne informacje. Tego szukałem :)

  4. michalekd Powiedział:

    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ć?

  5. admin Powiedział:

    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.

  6. michalekd Powiedział:

    dla mnie też dziwne, bo już działa, może mimo ze pucowałem historie bez przerwy coś zostawało w pamięci…

  7. admin Powiedział:

    No, czasem tak to jest z tymi cache’ami itp.

Dodaj odpowiedź