[PHP] jak wykonać bezpieczne dla SEO przekierowanie 301 na poziomie skryptu PHP
Często przy migracji strony na nowy system CMS „lecą” linki. Po prostu nie działają stare odwołania, bo nowe mają inną kontrukcję albo adres.
Może to znacząco zaszkodzić pozycji strony w wyszukiwarce. Z pomocą mogą przyjść przekierowania 301.
Najlepszym pomysłem jest umiejscowienie takiego przekierowania w pliku index.php. Zazwyczaj jest to główny plik sterujący np. systemem CMS albo frameworkiem PHP o który oparta jest strona.
Na samym początku pliku index.php, linijkę niżej niż znacznik otwierający „<?php” umieść kod:
switch ($_SERVER['REQUEST_URI']) { case '/stary-link-ktory-juz-nie-dziala': header("Location: http://nazwa-domeny.pl/nowy-dzialajacy-link", true, 301); exit(); break; }
Każde kolejne odwołanie polega na dodaniu nowej linijki począwszy od „case” czyli np.:
switch ($_SERVER['REQUEST_URI']) { case '/stary-link-ktory-juz-nie-dziala': header("Location: http://nazwa-domeny.pl/nowy-dzialajacy-link", true, 301); exit(); break; case '/kolejny-stary-link-ktory-juz-nie-dziala': header("Location: http://nazwa-domeny.pl/kolejny-nowy-dzialajacy-link", true, 301); exit(); break; }
Itd.
Tworzenie takiego kodu może okazać się karkołomnym zadaniem. Z pomocą może przyjść ten arkusz kalkulacyjny (arkusz-przekierowan), gdzie łatwo można dodawać odp. wpisy i następnie taki kod przekleić do skryptu usuwając znaki tabulacji.
Należy jednak pamiętać, że w takim wypadku łącze z którego nastąpi przekierowanie (tutaj: /stary-link-ktory-juz-nie-dziala albo /kolejny-stary-link-ktory-juz-nie-dziala) ma bezwzględne pierwszeństwo w uruchomieniu pod daną domeną.
Oznacza to, że jeśli w CMS dodasz podstronę z dokładnie takim linkiem jak tutaj z którego następuje przekierowanie – nie będzie ona działać. Przekierowanie nastąpi jako pierwsze, bo linijka ta jest wykonywana w pierwszej kolejności.
grafika: pexels.com