Indice dei contenuti
Dopo aver parlato delle due tecniche URL Rewrite e HTTP Redirect in termini generali, in questo articolo andremo ad approfondire come utilizzarle all’atto pratico mettendo a fuoco dei casi d’uso comuni.
L'obiettivo è quello di mettere a fuoco i casi in cui è consigliabile utilizzare un URL Rewrite, quelli in cui è bene impostare degli HTTP Redirect, e - soprattutto - le situazioni in cui è opportuno utilizzarli entrambi in modo congiunto al fine di ottenere il migliore risultato possibile in ottica SEO.
Quando utilizzare un URL Rewrite
In sintesi, il rewrite va utilizzato ogni volta che vogliamo accettare la URL chiamata dall’utente, ma ricondurla (internamente) a una logica nostra: in altre parole, “gestirla internamente” tramite il nostro server anziché respingerla e/o reindirizzarla verso altri URL (anche gestiti tramite altri server).
Proviamo ad elencare alcuni casi d’uso tipici dove ha senso prevedere un URL rewrite:
- Consentire l’utilizzo di URL più leggibili, anche in ottica SEO. Esempio: invece di creare URL del tipo www.ryadel.com/?postId=127 (poco leggibile, pessima in ottica SEO), potremmo creare URL del tipo www.ryadel.com/come-configurare-wordpress-127.html (molto più leggibile, e molto migliore in ottica SEO), creando poi la regola necessaria per “riscriverla” come la precedente.
- Nascondere determinati path interni. Ad esempio, invece di esporre la seguente cartella filesystem: www.ryadel.com/utenti/mario-rossi/files/avatar.png, potremmo esporre questa:
www.ryadel.com/utenti/127/files/avatar.png, "riscrivendola" poi internamente così da servire comunque, in risposta alla request, il file presente nella cartella occultata.
Quando utilizzare un HTTP Redirect
In sintesi, il redirect va utilizzato ogni volta che vogliamo sostituire la URL chiamata dal client/browser con un’altra, presumibilmente più corretta o più aggiornata, eventualmente anche gestita da web server diversi.
Proviamo ad elencare alcuni casi d’uso tipici dove ha senso prevedere un HTTP redirect:
- Migrare un sito da un dominio all’altro. Ad esempio, da www.ryadel.it a www.ryadel.com. In questi casi, poiché la migrazione è tipicamente permanente, andremo a utilizzare il Redirect con status code 301 (Permanent).
- Bloccare l’accesso a una sezione o a una pagina di un sito. Ad esempio: www.ryadel.com/pagamenti/, oppure www.ryadel.com/post-da-nascondere/. In questo caso potremmo voler utilizzare un Redirect con status code 301 o 302 a seconda della durata che vogliamo dare al blocco (permanente o temporaneo).
Utilizzo congiunto di Rewrite e Redirect
Tipicamente, è buona prassi fare in modo che ogni pagina web dei nostri siti web sia accessibile mediante un singolo URL. I motori di ricerca tendono infatti a penalizzare pagine identiche accessibile tramite molteplici URL, perché le considerano - anche giustamente - come tentativi scorretti di creare link al proprio sito.
Per questo motivo, quando si sceglie di creare URL leggibili per le proprie pagine web (www.ryadel.com/come-configurare-wordpress-117.html) e, contestualmente, si utilizzano tecniche di URL Rewrite per “riscriverle” internamente per farle “leggere” a PHP o ad altri linguaggi server-side (www.ryadel.com/index.php?postId=117), è buona norma anche impostare un HTTP Redirect sul secondo indirizzo, in modo che reindirizzi al primo. In questo modo:
- Se l’utente effettua una request utilizzando la URL leggibile, il web server effettuerà un URL rewrite sulla URL interna (non leggibile);
- Se l’utente effettua una request utilizzando la URL interna (non leggibile), riceverà un HTTP Redirect (tipicamente 301) sulla URL leggibile;
Ovviamente, però, questo HTTP Redirect non potrà essere impostato a livello di web server, perché quest’ultimo non avrebbe modo di ricostruire la URL leggibile: più precisamente, gli manca l’informazione relativa al nome o al titolo della pagina web (nel caso di cui sopra, l'informazione mancante è “come-configurare-wordpress”). Come facciamo quindi a impostare questo HTTP Redirect? O meglio, chi è l’unico che ha la possibilità di farlo?
La risposta è semplice: il modulo che gestisce le request dinamiche server-side, ovvero (nel nostro caso) PHP; è la pagina PHP che, effettuando la query al Database utilizzando l’ID della pagina o dell’articolo, ha modo di recuperare il titolo e di creare la URL leggibile “corretta”; di conseguenza, sarà PHP a dover impostare il redirect, cosa che fortunatamente può fare visto che è lui a produrre la HTTP Response (header compresi): come sappiamo, infatti, le informazioni relative al redirect vengono indicate al browser tramite gli HTTP response header, e più precisamente nel Location header.