HomeBlogWordPress multisite cambiare le immagini gestite da ms-file.php

WordPress multisite cambiare le immagini gestite da ms-file.php

Scritto il -   - Massimo Della Rovere

Tutto coloro che utilizzano wordpress in versione multisite forse si saranno accorti che le risorse immagine e gli allegati che vengono collegati ai post non sono serviti direttamente dal server web come risorse statiche ma viene demandata l’elaborazione ad un file PHP chiamato ms-file.php. Anche se in internet ho trovato discussioni di autorevoli esperti nel settore che danno delle motivazioni precise a questa scelta, io rimango tra quelli che non ne sono convinti, infatti continuo a pensare che sia stata una scelta infelice e sono sicuro che verrà cambiata.

I problemi più gravi che mi sono trovato ad affrontare sono che sul file di configurazione di apache tutte le direttive che vengono specificate con un filematch sulle immagini vengono ignorate in quanto per il server web risulta l’elaborazione di un file PHP, per non parlare delle performance dove questa tecnica è uno spreco enorme di RAM e utilizzo CPU.

Prima di continuare con l’articolo tengo a precisare che questo è valido solo se si usa WordPress in modo multisite in quanto nella maniera tradizionale l’accesso è standard.

Il problema è difficile da risolvere in maniera standard, in quanto la struttura delle directory per memorizzare le informazioni statiche sono basate sul codice del sottoblog mentre le regole di reindirizzamento che possiamo usare su apache o sul file .htaccess sono basate sul nome.

In ogni caso se avete attivato il multisite solo per gestire un numero limitato di blog, ad esempio per gestire una lingua diversa, una versione del sito per device mobili o altro, vi consiglio di aggiungere delle regole fisse sul file .htaccess, in questa maniera evitate uno grande spreco di risorse e vedrete migliorare le vostre performance in maniera significativa, specialmente se nei vostri post utilizzate l’inserimento di molte risorse multimediali o allegati.

RewriteRule ^(nome_multisite_1+/)?files/(.+) wp-content/blogs.dir/2/files/$2 [L]
RewriteRule ^(nome_multisite_2+/)?files/(.+) wp-content/blogs.dir/3/files/$2 [L]
RewriteRule ^(nome_multisite_3+/)?files/(.+) wp-content/blogs.dir/4/files/$2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

In questo esempio ho a disposizione tre site oltre a quello principale che funziona come un’installazione standard, ogni site memorizza il suo contenuto riguardante gli allegati e le risorse multimediali nella directory wp-content/blogs.dir/id_site, a questo punto inserendo queste semplici regole al file .htaccess o nel file di configurazione di apache, il server web caricherà direttamente la risorsa statica senza passare tramite la chiamata php a ms-file.php. Da notare che l’ultima riga specificata già dovrebbe essere presente nel vostro file di configurazione standard, quindi aggiungete quelle inerenti i vostri sites prima di questa riga.

Questa tecnica è stata provata e testata con successo su un WordPress 3.2, provare in un’ambiente di test e verificare il corretto funzionamento se si utilizza una versione diversa.

Ultimamente ho trovato un ticket aperto su questo argomento nel sito ufficiale, se vi interessa approfondire e seguire gli sviluppi andate su http://core.trac.wordpress.org/ticket/19235.

Autore:
Massimo Della Rovere
Articoli:
140
Website:
http://startbyzero.com/
Nato a Roma nel 1968, appassionato di informatica, programmatore e sistemista su IBM iSeries, esperto in procedure web con PHP e MySQL, grande utilizzatore dei prodotti Google, Linux, Wordpress ed Amazon AWS. Attualmente vive in Perù nella città di Lima, da dove porta avanti il suo progetto favorito riguardante il blog multitematico di startbyzero.com. Per contattarlo basta seguirlo sul profilo pubblico presente nel social network di google+.

Scrivi un tuo commento o qualche consiglio