Jak zrobić przekierowanie PHP redirect?

Cieszę się, kiedy mogę łączyć w artykule dwie moje pasje, jakimi są SEO i PHP. Temat przekierowań znakomicie ze sobą tutaj współgra.

Ilustracja do artykułu o przekierowaniach
Ilustracja do artykułu o przekierowaniach | envato, autor Maciejbledowski

Często seowcy karzą przekierować programiście "w htaccess" jedne adresy na drugie, i wszystko się zgadza, ale takie przekierowania "w htaccess" to się robi dla kilku linków, albo kilku wzorców.  A co jeśli mamy do przekierowania tysiące adresów?

Przekierowania wykonujemy przecież, bo:

  • sprzątamy jakieś stare zaniedbania,
  • sprzątamy broken links prowadzące z sieci,
  • robimy migrację na nowy CMS i każdy stary adres będzie miał nowy, gdzie nie da się wyłapać wzorca i zrobić to za pomocą sprytnego Regex-a,
  • chcemy wdrożyć krótkie adresy,
  • czasami po prostu chcemy mieć porządek w aplikacji, nawet tej małej, która obecnie ma tylko 20 przekierowań. 

Przychodzi z pomocą nam wykonanie przekierowanie w kodzie aplikacji.  Do samego przekierowania w PHP, bo o aplikacji w PHP dzisiaj rozmawiamy,  służy nam funkcja header(), która zwraca czyste nagłówki HTTP z kodami odpowiedzi. Do wykonania przekierowania potrzebujemy najczęściej statusu 301 i podanego Location gdzie ma przenieść  przekierowania. O samym wpływie na SEO i rodzajach przekierowań przeczytaj pod zaznaczonym linkiem lub odsyłam Cię do rfc2616, gdzie opisane jest całe HTTP/1.1 i poszczególne kody odpowiedzi HTTP

<?php
header( "Location: $location", $replace, $status );
exit;
?>

W funckji header() parametru $location nie musimy długo tłumaczyć, wskazujemy tam miejsce docelowe. Drugi parametr, jaki przyjmuje funkcja header, to $replace,  parametr ten nadpisuje takie same rodzaje header i nie pozwala na niepotrzebne wywołanie header location. W $status przekazujemy kod przekierowania, gdzie  301 to Moved Permanently, 302 Found. Zobacz inne kody serwera pod adresem.

Przykład:

<?php

header( "Location: https://www.google.pl", true, 301);
exit;
?>

Jeśli szukałeś tylko dokładnej funkcji, za pomocą której wywołasz header location to na tym koniec, pamiętaj tylko po jej wywołaniu zwrócić exit, żeby poszedł tylko sam nagłówek. Jeśli nie masz pomysłu jak wykonać aplikacje lub panel przekierowań w PHP zapraszam Cię do czytania dalej.

Musisz też pamiętać, że funkcja hader() to nie jedyna opcja na wykonanie przekierowania w PHP, które będzie backendowe i zgodnie z SEO. Możemy użyć meta refresh, bo jest to traktowane jak stałe przekierowanie 301 przez Google, pozwala na przeniesienie PageRank na stronę docelową. To  dzięki  Netscape mamy metatag meta refresh, w którym podajemy też lokalizacje, na którą ma przekierować nas przeglądarka. 

Metatag musi mieć postać: 

 <meta http-equiv="Refresh" content="0; url=http://www.example.com/" />

gdzie w   content="0; zero jest czasem wyrażonym w sekundach, po jakim strona ma przekierować się do innego adresu. 

Umieś metatag w sekkcji <head>, a jeśli czas zwiększasz do kilku sekund, to możesz umieścić w sekcji body informacji o nadchodzącym przekierowaniu, np.  "Za trzy sekundy przekierowujemy Cię na stronę https://optymeo.pl".

System przekierowań w PHP

Jeżeli rozważamy pisanie w czystym PHP, bez żadnego frameworka, to trzeba zacząć od pobrania wywołanej ścieżki w przeglądarce, która stanie się naszym kluczem w bazie danych.  Ścieżkę z adresu wyciągniesz ze zmiennej tablicowej $_SERVER['REQUEST_URI'] do trzymania przekierowań bazę danych musisz wybrać sobie sam, najlepiej taką na której stoi CMS, ale przy rozwiązaniach z dużym ruchem, albo ze wzorcami przekierowania, o których za chwilę, może lepiej zastanowić się nad bazą NoSQL. 

Na pewno kluczowe jest założenie klucza na pole, kolumnę, która będzie trzymała ścieżkę do przekierowania i w szukaniu klucza przy bardzo dużym obciążeniu poradzi sobie zwykły MySQL.

Warte przeczytania: