Come rimuovere la data dagli URL di WordPress

L’esigenza di rimuovere il formato data imposto dai permalink di un sito è dovuta, in molti casi, alla necessità di accorciare gli URL del proprio sito, e al tempo stesso fornire un formato compatto per gli indirizzi degli articoli.

Per intenderci, come facciamo a passare da (ad esempio):

https://trovalost.it/2020/11/17/togliere-la-data-url-wordpress/

al formato corrispondente, più corto e privo di data:

https://trovalost.it/togliere-la-data-url-wordpress/

in modo indolore, e soprattutto automatico? Prima di arrivare al punto, è necessario fare qualche piccolo ragionamento per arrivarci nel migliore dei modi.

Premessa: il problema della coerenza dei redirect

Il problema principale da premettere a qualsiasi discorso legato al cambio del formato degli URL è naturalmente legato alla coerenza tra vecchi contenuti e nuovi; dobbiamo fare in modo che il sito resti raggiungibile per chiunque arrivi alle pagine nel vecchio formato (con data), altrimenti rischiamo di combinare pasticci di vario genere. Al tempo stesso, la logica di redirect deve essere coerente ed evitare loop di reindirizzamento (cioè pagine web che non risolvono mai in uno stato finale 200 OK).

Pertanto, prima di rimuovere la data dagli URL di WordPress, è opportuno fare un po’ di considerazioni: se avete un sito di notizie, ad esempio, può avere senso mantenere le date nelle varie URL. Se invece avete uno dei tanti siti di guide online, oppure avete un sito fatto soprattutto di contenuti evergreen, oppure – ancora – volete sbarazzarvi della data per fornire ai vostri visitatori URL più brevi e maneggevoli, è venuto probabilmente il momento di fare questo passaggio.

Sul questo sito, ad esempio, le date sono state rimosse da tempo semplicemente per avere una complicazione in meno da dover gestire. C’è un fatto importante da conoscere, a questo punto: se passate dalle URL con data a quelle senza data, il redirect al nuovo formato non sarà automatico, e dovrete gestirlo voi.

Modifica dei permalink WordPress + .htaccess

Per cambiare le date in WordPress all’interno degli URL degli articoli, e fare in modo che si possa passare dal formato

miosito.com/2020/11/17/nome-articolo

a quello:

miosito.com/nome-articolo

in apparenza basterebbe andare su Impostazioni e poi su Permalink.All’interno dell’impostazione, possiamo lasciare semplicemente

/%postname%/

che corrisponde alla parte con nome-articolo, in sostanza, e vale come espressione jolly per qualsiasi articolo. Lato backend dei permalink, trovate questo setting sotto Impostazioni comuni del vostro sito, selezionando uno dei formati proposti (ad esempio Nome articolo o uno dei tanti, opzionali, privo di data nell’URL).

Scegliamo una struttura con il solo /%postname%/ e sembrerebbe tutto ok, ma non è così: il problema è che, così facendo, abbiamo fatto il lavoro a metà – avremo infatti sistemato soltanto gli articoli che pubblicheremo in futuro, non quelli dello storico del blog. E per i siti web che hanno molti contenuti indicizzati su Google, e ricevono molto traffico dal famoso motore di ricerca, significherebbe che i vecchi URL andrebbero tutti su una pagina 404 di errore (pagina mancante), facendoci perdere gran parte del traffico del sito.

Per ovviare a questo problema, in teoria uno dovrebbe redirezionare tutti i vecchi URL verso i nuovi sfruttando un redirect 301, cosa che andrebbe fatta un post alla volta e, insomma, se abbiamo un archivio di migliaia di articoli non è proprio il massimo. Molto meglio inserire, a questo punto, una regola fissa che possa redirezionare in 301, in automatico, tutti gli URL del tipo:

miosito.com/2020/11/17/nome-articolo-1

miosito.com/2020/11/17/nome-articolo-2

miosito.com/2020/11/17/nome-articolo-3

alla nuova forma abbreviata:

miosito.com/nome-articolo-1

miosito.com/nome-articolo-2

miosito.com/nome-articolo-3

..

Dall’htaccess standard di WordPress a quello con redirect delle date negli URL

Come si fa? Su Apache, in genere, basta aggiungere la seguente direttiva nel file htaccess. Ammettiamo di avere un file htaccess di questo genere (standard di WordPress):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

per passare al nuovo aliasing di URL, dobbiamo sostanzialmente aggiungere una riga a seconda del formato di partenza della data e di quello di arrivo. Il formato di partenza può essere di tre tipi:

1) Se partite da questo formato permalink:

/%year%/%monthnum%/%day%/%postname%/

la regola da usare è questa:

RewriteRule ^([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /$4 [R=301,NC,L]

2) Se partite da questo formato permalink:

/%year%/%monthnum%/%postname%/

la direttiva da usare invece è questa:

RewriteRule ^([0-9]+)/([0-9]+)/(.*)$ /$3 [R=301,NC,L]

3) Se partite da questo formato permalink:

/%year%/%postname%/

la regola da usare, infine, è la seguente:

RewriteRule ^([0-9]+)/(.*)$ /$3 [R=301,NC,L]

Quindi integrando il tutto nel file htaccess, dovremo fare attenzione a dove lo andiamo ad inserire: in questo caso andrà direttamente dopo RewriteBase /, ovvero (nel secondo caso, uno dei più comuni in effetti):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([0-9]+)/([0-9]+)/(.*)$ /$3 [R=301,NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

e tutti gli altri casi andrebbero aggiornati di conseguenza.

Rimuovere data da permalink WordPress in NGINX

Se utilizzate NGINX invece di Apache, il file htaccess non sarà ovviamente disponibile, per cui dovrete intervenire sul file di configurazione ed aggiungere la seguente riga, modificando l’espressione regolare in base al formato di partenza della data. In questo caso, è un qualcosa che funziona se partite da una data del tipo /anno/mese/giorno:

location / {
rewrite "/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)" /$4 permanent;
}

Usare un plugin per togliere le date dai permalink di WP

Se il passaggio precedente vi sembra troppo complesso – o non alla vostra portata, c’è anche un plugin che effettua la stessa operazione in modo automatico: ad esempio WP Date Remover, che è gratuito e basta impostarlo una sola volta. Formalmente funziona così: installate il plugin ed abilitatelo, poi andate su Impostazioni nel vostro backend, e dovreste trovare la voce WP Date Remover.

Selezionate le categorie degli articoli per cui volete rimuovere le date (eventualmente anche tutte) e poi selezionate Update. Questo dovrebbe garantire il redirezionamento sulla maggiorparte dei siti, anche se (trattandosi di un plugin) può darsi che la questione sia più complessa in alcuni casi, scenari in cui è necessario provvedere al redirect via htaccess come visto qui sopra.

0 voti