Procédure
Presentazione
Abbiamo recentemente aggiornato la nostra offerta di VPS per includere un pacchetto ISPconfig che gira sul server web Nginx invece che suApache. La scelta si è basata sul fatto che è leggero e veloce.
Ma una volta implementato con un negozio Prestashop, ci siamo scontrati con uno dei limiti di Nginx: non supporta i file .htaccess.
Di conseguenza, non è possibile attivare la funzione"URL semplificati" dal back office, come invece è possibile fare con Apache.
Vediamo come ovviare a questo problema.
Connettersi via SSH
La prima cosa da fare è procurarsi gli identificativi SSH(Come connettersi come root su un server VPS dedicato) e connettersi al proprio VPS.
Modificare la configurazione di Nginx
Modificare il file /etc/nginx/sites-available/my_site.com.vhost con il comando :
nano /etc/nginx/sites-available/my_site.com.vhost
Aggiungere quindi le seguenti righe tra i tag"server {}":
location / {
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
riscrivere ^/([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;
riscrivere ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
riscrivere ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1.jpg last;
riscrivere ^/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
try_files $uri $uri/ /index.php?$args;
}
Riavviare il servizio Nginx
Per farlo, è sufficiente utilizzare il comando :
/etc/init.d/nginx restart
Testare la funzione "URL semplificati
Attivare la funzione"URL semplificati" dal backoffice di Prestaphop (Preferenze => SEO e URL):
Nel browser l'URL: http: //mon_site.com/index.php?id_product=4&controller=product
![]()
diventa: http: //mon_site.com/robes-soiree/4-robe-imprimee.html
La riscrittura degli URL funziona bene.
![]()