Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie 301 w PHP
Forum PHP.pl > Forum > PHP
m.e.n.t.o.s.
Mam taki oto problem. Mam starą stronę internetową, która jest zaindeksowana w google i ma jakieś tam wyniki. Teraz napisałem stronę od nowa i postawiłem na innym serwerze, a co za tym idzie, mam inny adres. Więc chciałbym zrobić przekierowanie 301 na starej stronie w PHP (nie mam możliwości użycia .htaccess) niektórych artykułów do nowej strony. Wydawałoby się nietrudne zadanie, a jednak napotykam problem i nie wiem jak go rozwiązać.

Mianowicie na starej stronie artykuły podzielone były na sekcje i były tam odnośniki wskazujące na tą samą stronę, np:
http://strona.pl/index.php?strona=artykul#podpunkt3
Google niektóre strony zaindeksował właśnie używając takich linków. Jak zrobiłem przekierowanie, strony które w google są zaindeksowane bez odnośnika wewnętrznego są normalnie przekierowywane. Natomiast jeśli kliknę w wynikach wyszukiwania google na link z hashem #, strona zostaje przekierowana na nowy serwer, ale tam zaraz jest przekierowywana na stronę błędu 404.

W przekierowaniu wyciągam i sprawdzam adres za pomocą zmiennych $_SERVER['HTTP_HOST'] i $_SERVER['REQUEST_URI']. Ale jak wyciągnąć z wywołanego adresu część znajdującą się po hash'u #. A może istnieje jakiś inny sposób, żeby sobie z tym poradzić?

poniżej część mojego przekierowania

  1. <?php
  2. $request_uri = ''; // zmienna przechowująca dalszą część adresu
  3. if($_SERVER['HTTP_HOST'] == 'stara_strona.org' || $_SERVER['HTTP_HOST'] == 'www.stara_strona.org' || $_SERVER['HTTP_HOST'] == 'stara_strona.xt.pl' || $_SERVER['HTTP_HOST'] ==' www.stara_strona.xt.pl')
  4. {
  5. if($_SERVER['REQUEST_URI'] == '/index.php?strona=autor&katalog=autor')
  6. $request_uri = '/o-mnie';
  7. else if($_SERVER['REQUEST_URI'] == '/index.php?strona=start&katalog=start')
  8. $request_uri = '/glowna';
  9.  
  10. header("HTTP/1.1 301 Moved Permanently");
  11. header("Location: <a href="http://www.nowa_strona.xn.pl&quot;.$request_uri);" target="_blank">http://www.nowa_strona.xn.pl".$request_uri);</a>
  12. header("Connection: close");
  13. }
  14. ?>
emtiej
  1. header("Location: <a href="http://www.nowa_strona.xn.pl".$request_uri);" target="_blank">http://www.nowa_strona.xn.pl".$request_uri);</a>


W tym chyba problem kolego...
m.e.n.t.o.s.
jeszcze raz końcówka kodu, bo coś się źle wkleiło


header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.nowa_strona.xn.pl".$request_uri);
header("Connection: close");
exit;

I nikt nic nie wie?
Pilsener
Cytat
jak wyciągnąć z wywołanego adresu część znajdującą się po hash'u #


1. Zrób sobie:
  1. print_r($_SERVER);
- i już wiesz, czy adres z # jest w ogóle przekazywany i możliwy do odczytania

2. Teraz wystarczy rozbić:
  1. list($adres_przed_krzyzem,$adres_po_krzyzu) = explode("#",$adres);
- i zmontować na tej podstawie odpowiedni, nowy adres do przekierowania.

P.S. > gugiel łyka też przekierowania w meta
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.