Uno dei problemi fastidiosi e diffusi che possiamo incontrare quando lavoriamo con Prestashop, è quello delle immagini degli articoli che non vengono visualizzate correttamente. Stiamo parlando di un problema che riguarda soltanto le immagini, perché di fatto tutti gli altri URL (come prodotti o categorie) funzionano correttamente, ma rimane il problema delle immagini che non si vedono.
Questo avviene perché Prestashop non usa l’indirizzo diretto alle immagini, ma ne riscrive gli URL. Per prima cosa accertiamoci che le immagini siano effettivamente presenti sul server nella cartella img
presente nella directory di installazione.
Una delle cause all’origine del problema è che Prestashop ha qualche problemino di funzionamento quando viene ospitato su un server su cui gira nginx. Se usiamo invece Apache, i redirect per creare i Friendly URL funzioneranno correttamente senza configurazioni aggiuntive.
La soluzione sta nel dire direttamente a nginx come deve eseguire l’url rewrite per quanto riguarda le immagini, incollando queste direttive nel suo file di configurazione nginx.conf
:
location /CARTELLA_INSTALLAZIONE/ { index /CARTELLA_INSTALLAZIONE/index.php; rewrite ^/CARTELLA_INSTALLAZIONE/api/?(.*)$ /CARTELLA_INSTALLAZIONE/webservice/dispatcher.php?url=$1 last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$1$2.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$1$2$3.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$3/$1$2$3$4.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/c/$1$2.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/c/$1.jpg last; rewrite ^/CARTELLA_INSTALLAZIONE/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /CARTELLA_INSTALLAZIONE/img/c/$1$2.jpg last; try_files $uri $uri/ /CARTELLA_INSTALLAZIONE/index.php?$args; }
Sostituite /CARTELLA_INSTALLAZIONE/
con il nome della vostra cartella. Se Prestashop fosse installato nella cartella principale (root) del vostro dominio, basterà sostituire /CARTELLA_INSTALLAZIONE/
con /
:
location / { index /index.php; rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last; rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2.jpg last; rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3.jpg last; rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last; rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last; rewrite ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1.jpg last; rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last; try_files $uri $uri/ /index.php?$args; }
Se non avete accesso al file di configurazione o non sapete come fare, contattate la vostra hosting company: saprà sicuramente aiutarvi al meglio.