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.
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ń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ńWitam,
OdpowiedzUsuń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ę.
Jeśli chodzi o ten jeden konkretny adres, do pliku .htaccess należy dodać poniższy wiersz zaraz po dyrektywie RewriteEngine On:
OdpowiedzUsuń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.
Wielkie dzięki
OdpowiedzUsuń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ź
Ładnie opisane obydwa sposoby :)
OdpowiedzUsuń