Come fare un redirect con PHP?

(*1*)
  • CommentaScrivi un commento
  • Discussion boardDiscuti sul discussion board
  • PrecedenteE’ possibile fare un redirect temporizzato con PHP?

According to fare un redirect PHP è necessario utilizzare l. a. funzione header(). Grazie a questa funzione nativa del PHP, mediante l. a. quale possiamo inviare intestazioni HTTP al shopper che sta visitando l. a. nostra pagina internet, è possibile impostare una nuova location verso l. a. quale reindirizzare l. a. navigazione dell’utente, in poche parole possiamo some distance “rimbalzare” l’utente portandolo su un’altra pagina del nostro o di un altro sito.

Indice

[ nascondi ]

Come fare un redirect con PHP

According to prima cosa vediamo un semplice esempio di utilizzo della funzione header() di PHP according to effettuare un redirect automatico dell’utente verso una diversa pagina del sito o di un sito differente:

// redirect verso pagina interna
header("location: /nuova-pagina.php"); // redirect verso una risorsa esterna al sito
header("location: http://www.sito.it/pagina.php");

E’ importante ricordare che l’utilizzo di questo codice deve essere fatto prima di aver generato alcun output. In caso contrario l’interprete PHP restituirà un errore invece di realizzare il redirect desiderato. Segue un esempio di codice errato:

echo "Stampo un po' di output";
header("location: http://www.sito.it/pagina.php");
// !!! ERRORE !!!
// non puoi inviare degli header dopo aver stampato a video!!!

Un’altra accortezza alla quale è bene prestare attenzione consiste nell’aver cura di inserire un go out dopo l’utilizzo di questa funzione qualora, all’interno del nostro script, vi sia altro codice da eseguire dopo quello che realizza il redirect. Advert esempio:

if ($utente_loggato == false) { header("location: http://www.sito.it/pagina.php"); go out;
}
// ... segue altro codice PHP ...

Grazie advert go out, infatti, l’interprete PHP interrompe l’esecuzione del codice della pagina non appena inviate le intestazioni HTTP attraverso le quali prenderà il by means of il redirezionamento dell’utente.

Redirect e motori di ricerca

Diversamente da un redirect realizzato con Javascript, è bene precisare che un redirect PHP, operando attraverso l’invio di intestazioni same old HTTP, produce i suoi effetti non solo nei riguardi degli utenti del sito ma anche verso gli spider. Ne consegue che può rivelarsi piuttosto importante inviare, subito prima della nuova location, uno stato HTTP che informi lo spider circa l. a. natura del trasferimento.

Continua dopo l. a. pubblicità…

Normalmente un redirect è preceduto dall’invio di uno stato 3XX. Il più comune è il 302 che indica uno “spostamento temporaneo” della risorsa presso un’altra URL. In questo caso il motore di ricerca “segue” il redirect ma non aggiorna il suo archivio in quanto l. a. pagina originale è solo temporaneamente redirezionata (questo, almeno, è quello che gli cube lo stato 302).

Se lo scopo del nostro redirect è quello di indicare l. a. nuova URL di una risorsa (advert esempio perchè un contenuto è stato spostato su una nuova pagina del sito) sarà necessario utilizzare lo standing 301 Moved Completely.

Redirect 301 con PHP

According to effettuare un redirect permanente (redirect con standing 301) è necessario utilizzare due volte l. a. funzione header() di PHP: l. a. prima according to impostare lo standing HTTP 301 e l. a. seconda according to eseguire il reindirizzamento:

header('HTTP/1.1 301 Moved Completely');
header('Location: http://www.nuovosito.com');

Dal punto di vista dell’utente umano il primo header non produce nessun effetto tangibile sul redirect, according to gli spider, tuttavia, think un’importanza vitale in quanto informa il motore di ricerca del cambiamento avvenuto nel sito. A questo punto il motore di ricerca aggiornerà il suo indice sostituendo l. a. vecchia URL con l. a. nuova l. a. quale manterrà il rank originario nonché l’apporto di hyperlink eventualmente guadagnato nel pace.

Lo stesso risultato può essere raggiunto anche son una singola linea di codice PHP:

header('Location: http://www.nuovosito.com', true, 301);

Con questa sintassi il codice di stato HTTP è passato come terzo parametro della funzione header().

Gestire i redirect PHP con una funzione advert hoc

Di seguito una interessante funzione PHP che potete utilizzare nei vostri progetti according to gestire i redirect.

L. a. funzione accetta due parametri:

  • location: l. a. URL di atterraggio;
  • standing: lo stato HTTP del redirect.

Di seguito il codice della funzione:

serve as redirect($location, $standing=302) { if (!$location) { go back false; } if ($standing < 300 || 399 < $standing) { go back false; } header("location: " . $location, true, $standing); go back true;
}

According to effettuare il redirect sarà sufficiente chiamare l. a. funzione in questo modo:

if (redirect('https://www.nuovosito.com/nuova-pagina.php', 301)) { // termino l'esecuzione dello script go out;
}else{ // stampo a video l'errore echo 'Il redirect non funziona';
}

Un redirect PHP con conta-click integrato

In talune circostanze, quando si gestisce un redirect, può essere utile tenere il conto di quante persone cliccano su un dato hyperlink o digitano ancora l. a. URL di una nostra vecchia pagina internet. According to fare ciò possiamo, ovviamente, seguire various strade, in questa sede, tuttavia, opteremo according to l. a. più semplice: vediamo quindi come creare un redirect in PHP con conta-click inegrato senza ricorrere advert un database MySQL.

According to fare questo avremo bisogno di qualche riga di codice ed un bel report di testo (che chiameremo “contatore.txt”) al quale dovremmo settare i permessi di scrittura (chmod 666). According to quanto riguarda il report di testo: aprite il blocco observe, scrivete 0 (0) e salvate come “contatore.txt”.

According to quanto riguarda il codice PHP eccovi lo script commentato:

<?
// report di testo che uso come contatore
$miofile = 'contatore.txt'; // recupero il valore attuale del contatore
$visite = report($miofile); // verifico che l. a. funzione abbia avuto successo
if ($visite !== false) { // Incremento il valore di 1 $visite[0]++; // Apro il report in modalità scrittura $fp = fopen($miofile , 'w'); // Scrivo il valore numerico incrementato fputs($fp , $visite[0]); // Chiudo... fclose($fp);
} // Ora che abbiamo fatto i conti... possiamo fare il redirect!
header('HTTP/1.1 301 Moved Completely');
header('Location: http://www.nuovosito.com');
go out;
?>

According to sapere quante persone sono passate sulla nostra vecchia pagina internet sarà sufficiente dare una sbirciata al nostro report “contatore.txt”… according to farlo basterà digitarne l. a. giusta URL all’interno del vostro Browser (advert esempio: http://www.vecchiosito.com/contatore.txt).