Reindirizzamenti con htaccess

Uno degli aspetti più intriganti che mi è capitato nella mia avventura di migrazione da WordPress a Hugo è quella dei reindirizzamenti dei post da un permalink a un altro.

Nella precedente installazione di WordPress la struttura dei permalink era la seguente:

https://www.aldolat.it/<ANNO>/<CATEGORIA>/<TITOLO-DEL-POST>/

In Hugo ho deciso di cambiarla togliendo <CATEGORIA>/ dall’indirizzo e premettendovi posts/:

https://www.aldolat.it/posts/<ANNO>/<TITOLO-DEL-POST>/

lasciando così la stessa struttura in cui sono organizzati file e directory nel mio filesystem.

Chiaramente questo significa che il vecchio indirizzo non funziona più e genera un errore 404. Ma è possibile intervenire con una regola nel file .htaccess piuttosto semplice. Eccola.

RedirectMatch 301 ^/(\d{4})/(.*)/(.*)/$ https://www.aldolat.it/posts/$1/$3

Questo è quello che fa la regola, la quale utilizza mod_alias, il sistema più semplice per reindizzare cose, rispetto a mod_rewrite, più potente ma un pelo più complesso:

  1. RedirectMatch: attiva mod_alias per il reindirizzamento.
  2. 301: applica una stato HTTP di Moved Permanently.
  3. ^/(\d{4})/(.*)/(.*)/$: contiene la stringa da cercare. In questo caso si tratta di una regex che in sostanza dice questo: trova una stringa che inizia (^) con /(quattro numeri) e prosegue con due parti contenenti qualsiasi carattere e delimitate con slash (/) e queste due parti sono la parte finale della stringa ($). Fate attenzione alle parentesi tonde, in quanto queste saranno considerate da mod_alias come variabili che si possono usare per il reindirizzamento. Le variabili saranno numerate sequenzialmente da mod_alias a partire da 1.
  4. https://www.aldolat.it/posts/$1/$3: reindirizza ciò che hai trovato all’indirizzo indicato, sostituendo le variabili $1 e $3 in questo modo:
    1. $1: fa riferimento al primo gruppo di parentesi tonde, vale a dire (\d{4});
    2. $3: fa riferimento al terzo gruppo di parentesi tonde, vale a dire (.*).

Il risultato sarà quindi che un indirizzo del tipo:

https://www.aldolat.it/2012/news/htaccess-made-easy/

verrà reindirizzato a:

https://www.aldolat.it/posts/2012/htaccess-made-easy/

aldolat

Il blocco note di Aldo.