Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak przekierować wiele adresów
Forum PHP.pl > Forum > Przedszkole
php11
Cześć,

chciałbym przekierować wiele adresów (jeżeli adres zawiera tekst) na nowe.
Pojedynczo nie ma problemu:

  1. $url = $_SERVER['REQUEST_URI'];
  2. $zly = 'ala';
  3. $dobry = 'kot';
  4.  
  5. if(strpos($url, $zly)) {
  6. header("HTTP/1.1 301 Moved Permanently");
  7. header('Location: <a href="http://domena.pl/'.$dobry" target="_blank">http://domena.pl/'.$dobry</a> ) ;
  8. exit();
  9. }


ale mam tych adresów dużo i chciałbym uprościć :-)

  1. return array(
  2. 'zielony' => 'nowy-adres-czerwony',
  3. 'gruszka' => 'nowy-adres-jablko',
  4. 'zima' => 'nowy-adres-lato',
  5. )


Tylko nie wiem, jak "wsadzić" dane z array :-)

Dzięki za pomoc
emstawicki
1. Wysyłanie HTML w nagłówku chyba nie zadziała.
2. Jeżeli masz tablicę to sprawdź czy jest klucz w tej tablicy z uri (array_key_exists).
php11
Cytat
1. Wysyłanie HTML w nagłówku chyba nie zadziała.


Tak, dzięki, forum dopisało

Cytat
2. Jeżeli masz tablicę to sprawdź czy jest klucz w tej tablicy z uri (array_key_exists).


Chcę dopasować tylko część adresu. Jeżeli ta część występuje w $url to robię przekierowanie 301.
array_key_exists chyba nie zadziała, a poza tym nie wiem, jak przypisać właściwe przekierowanie.
:-)


Dziękuję za pomoc...

  1. $url = 'jakis-adres-z-wyrazem-zima-w-nim';
  2. $zly = 'zima';
  3. $dobry = 'nowy-adres';
  4.  
  5. if(strpos($url, $zly)) {
  6. header("HTTP/1.1 301 Moved Permanently");
  7. header('Location: Przekierowanie na nowy adres' ) ;
  8. exit();
  9. }


Mogę wstawić wiele takich, a nie umiem jednego, który pobierze z tablicy...
Pyton_000
Robisz tablicę klucz jako fraza wartość jako url i lecisz foreach po każdym.
php11
Włączyłem wyświetlanie błędów i wyciągnąłem wnioski...

  1.  
  2.  
  3. ini_set( 'display_errors', 'On' );
  4. error_reporting( E_ALL );
  5.  
  6.  
  7. $tablica = array(
  8. 'zielony' => 'nowy-adres-czerwony',
  9. 'gruszka' => 'nowy-adres-jablko',
  10. 'zima' => 'nowy-adres-lato',
  11. );
  12.  
  13.  
  14. foreach ($tablica as $klucz => $wartosc) {
  15. // print "\$tablica[$klucz] => $wartosc".'<br />';
  16. print "$klucz => $wartosc".'<br />';
  17. }
  18.  
  19. $url = $_SERVER['REQUEST_URI'];
  20. $zly = $klucz;
  21. $dobry = $wartosc;
  22.  
  23. if(strstr($url, $zly)) {
  24. header("HTTP/1.1 301 Moved Permanently");
  25. header('Location: domena.pl/'.$dobry ) ;
  26. exit();
  27. }
  28.  


Kod działa, ale tylko dla ostatniej pozycji tablicy: zima.
Poprawicie? Bo już wyczerpałem swoje możliwości...

Dzięki :-)
Pyton_000
Miałeś w pętli sprawdzać a nie poza nią:

  1. <?php
  2.  
  3.  
  4.  
  5. ini_set( 'display_errors', 'On' );
  6. error_reporting( E_ALL );
  7.  
  8.  
  9. $tablica = array(
  10. 'zielony' => 'nowy-adres-czerwony',
  11. 'gruszka' => 'nowy-adres-jablko',
  12. 'zima' => 'nowy-adres-lato',
  13. );
  14.  
  15.  
  16. foreach ($tablica as $klucz => $wartosc) {
  17. if(strstr($_SERVER['REQUEST_URI'], $klucz) !== false) {
  18. header("HTTP/1.1 301 Moved Permanently");
  19. header('Location: domena.pl/'.$dobry ) ;
  20. exit();
  21. }
  22. }
php11
Gapa ze mnie :-)
Dzięki

  1.  
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4.  
  5. $tablica = array(
  6. 'zielony' => 'nowy-adres-czerwony',
  7. 'gruszka' => 'nowy-adres-jablko',
  8. 'zima' => 'nowy-adres-lato',
  9. );
  10.  
  11. foreach ($tablica as $zly => $dobry) {
  12. print "$zly => $dobry".'<br />';
  13. if(strstr($_SERVER['REQUEST_URI'], $zly)) {
  14. header("HTTP/1.1 301 Moved Permanently");
  15. header('Location: domena.pl/'.$dobry ) ;
  16. exit();
  17. }
  18. }
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.