Come reindirizzare url dinamiche in PHP? Basta un semplice “if case”
Molto spesso mi ritrovo a dover fare reindirizzamenti per recuperare backlinks e traffico da vecchie url, specialmente dopo un restyling.
Ci sono infiniti modi per realizzare i fantomatici “redirect 301” e nel processo di ottimizzazione li reputo fondamentali, sia lato motori ma soprattutto lato utenti (il web è pieno di link rotti – non funzionanti – meno ne abbiamo sui nostri siti meglio è perchè come infastidiscono noi sono causa di frustrazione per tutti!).
Il livello di difficoltà per eseguire un redirect, al 99% dei casi è dato dalla complessità con cui sono state realizzate le url delle pagine: le più semplici da reindirizzare sono sicuramente quelle statiche, oppure quelle riscritte a regola d’arte, in fondo basta usare un 301 nel linguaggio di programmazione oppure se possibile utilizzare il comando “redirect” nel file .htaccess.
Le cose si complicano un poco però quando dobbiamo reindirizzare url dinamiche non riscritte del tipo:
http://www.miosito.it/index.php?id=5
Infatti questa tipologia di url non può essere reindirizzata dal file .htaccess in quanto non è in grado di riconoscere la variabile “id=5”. Lo stesso discorso vale se pensiamo di modificare e inserire il classico 301 all’interno del codice della pagina: “index.php”; ciò infatti non possibile perchè reindirizzeremmo tutte le richieste per:
http://www.miosito.it/index.php?id=N
Tutte ad una singola pagina, quindi verrebbe meno la corrispondenza prerogativa di un redirect 301 coi fiocchi, cioè:
pagina_vecchia -> pagina_nuova
Ad esempio:
http://www.miosito.it/index.php?id=5
http://www.miosito.it/index.php?id=10
http://www.miosito.it/index.php?id=20
punterebbero tutte ad una e sola pagina… un obbrobrio per chi desidera un lavoro SEO fatto bene!
La soluzione però è simile e altrettanto semplice, infatti possiamo usare una “condizione” che in base al valore indicato dalla variabile “id=” reindirizziamo il nostro utente e gli spider sulla pagina nuova (url) corrispondente: questo è possibile mediante l’operatore “case” di PHP; ecco un esempio concreto:
Url vecchia: http://www.miosito.it/index.php?id=5
Url nuova: http://www.miosito.it/azienda/
Url vecchia: http://www.miosito.it/index.php?id=10
Url nuova: http://www.miosito.it/prodotti/
Url vecchia: http://www.miosito.it/index.php?id=15
Url nuova: http://www.miosito.it/chi-siamo/
[php]
<html>
<body>
<?php
{
if(isset($_GET[‘id’]))
{
$id = $_GET[‘id’];
switch($id)
{
case 5:
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.miosito.it/azienda/" );
;
break;
case 10:
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.miosito.it/prodotti/" );
;
break;
case 20:
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.miosito.it/chi-siamo/" );
;
break;
}
}
else
{
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.miosito.it/home-page/" );
}
}
?>
</body>
</html>
[/php]
- Alla riga 5 identifichiamo la variabile “id” e impostiamo la condizione “if” (se)
- Poi per ogni possibilità impostiamo un valore al “case” = 5 poi 10 poi 20
- Assegniamo un redirect diverso per ogni case in funzione a dove vogliamo che l’utente atterri
- Alla riga 27 impostiamo una condizione “else” (altrimenti, ciò significa che se nessuna condizione precedente è stata soddisfatta viene eseguita questa in sostituzione) dove reindirizziamo ad una pagina generica (piuttosto che non reindirizzare è meglio sempre portare gli utenti su una pagina reale e non una di errore 404).
In questo modo otterremo in modo semplice e rapido il reindirizzamento 301 di qualsiasi url dinamica in PHP, basta sostituire i nomi e i valori nel case delle variabili.
Buon 301!
Un abbraccio,
Michele
