Przekierowanie 301

301 Moved Permanently, czyli znane przekierowanie 301 informuje przeglądarkę lub bota wyszukiwarki o tym, że żądany zasób został trwale przeniesiony na nowy adres. Wiąże się to z tym, że serwer odpowiada na zapytanie nagłówkiem HTTP z kodem 301. Dla porównania, kod 200 informuje przeglądarkę o poprawnym otrzymaniu żądania i zwróceniu żądanego zasobu. Podsumowując - przekierowania 301 używamy, gdy chcemy przekierować ruch na nowy adres. W tym wpisie zaprezentuję dwa sposoby na użycie tego przekierowania.

Przekierowanie 301 .htaccess

Wpisanie odpowiednich reguł do pliku .htaccess to najczęściej stosowany sposób na przekierowanie 301. Aby przekierować użytkowników na nowy adres, w pliku .htaccess wpisujemy następujące reguły:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Powyższy przykład przekieruje z adresu example.com na adres www.example.com.

Przekierowanie 301 PHP

Gdy chcemy wykonać przekierowanie 301 z poziomu PHP na nowy stały adres, tworzymy plik z następującym kodem:

<?php

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.example.com');

exit;

Pierwsza linia wysyła nagłówek z odpowienim kodem, druga wymusza przekierowanie, a trzecia kończy wykonywanie skryptu.

Komentarze

  1. Mam taki problem z przekierowaniem 301. Otóż mam na starej domenie zapisane pliki w html-u a serwer pliku htaccess nie obsługuje. Moje pytanie brzmi: jak mam przekierować starą domenę no.boo.pl na nową doremontu.com. Php serwer obsługuje ale wtedy musiałbym zmienić index.html na php czy to będzie dobrze?

    OdpowiedzUsuń
  2. Jeśli plik .htaccess nie jest obsługiwany przez serwer to faktycznie przekierowanie musi odbyć się z poziomu PHP. Jak tego dokonać opisałem powyżej. Oczywiście, aby plik był parsowany przez PHP musi mieć rozszerzenie .php. Kod obsługujący przekierowanie powinien być wywołany przed wysłaniem do przeglądarki jakichkolwiek treści.

    OdpowiedzUsuń
  3. Witam,
    mam prosty problem a nie mogę sobie z nim poradzić.
    Proszę o pomoc.
    Chciałbym zrobić przekierowanie 301 z adresu:
    domena.pl/pl/n/2
    na adres:
    domena.pl/nowy-tytul-strony
    Będę wdzięczny za podanie konkretnego wpisu do pliku .htaccess.
    Dziękuję.

    OdpowiedzUsuń
  4. Jeśli chodzi o ten jeden konkretny adres, do pliku .htaccess należy dodać poniższy wiersz zaraz po dyrektywie RewriteEngine On:

    RewriteRule ^pl/n/2$ /new-title [R=301,L]

    Jeśli stron jest kilka i mają one unikalne ID, należy dodać następujący wiersz:

    RewriteRule ^pl/n/([0-9]+)$ /new-title-$1 [R=301,L], gdzie $1 to ID strony.

    OdpowiedzUsuń
  5. Wielkie dzięki
    RewriteRule ^pl/n/2$ /new-title [R=301,L]
    umieściłem zaraz pod RewriteEngine On
    i zadziałało jak trzeba

    Jeszcze raz dziękuję za szybką odpowiedź

    OdpowiedzUsuń
  6. Ładnie opisane obydwa sposoby :)

    OdpowiedzUsuń

Prześlij komentarz

Dzięki za komentarz!

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?