Procédure
Présentation
Récemment nous avons mis à jour nos offres VPS en proposant une formule ISPconfig tournant avec le serveur Web Nginx au lieu d'Apache. Le choix s'est fait sur le fait qu'il soit léger et rapide.
Seulement une fois mis en oeuvre avec une boutique Prestashop, nous nous heurtons à une des limitations de Nginx, le fait qu'il ne supporte pas les fichier .htaccess.
De ce fait il vous est impossible d'activer la fonction "URL's simplifiées" depuis votre backoffice, comme vous le faisiez avec Apache.
Voyons comment faire pour remédier à ce problème.
Se connecter en SSH
La première chose à faire est de mettre la main sur vos identifiants SSH (Comment se connecter en root sur un serveur dedie VPS) et de vous connectez à votre VPS.
Modifier la configuration de Nginx
Editez le fichier /etc/nginx/sites-available/mon_site.com.vhost avec la commande :
nano /etc/nginx/sites-available/mon_site.com.vhost
Puis ajoutez les lignes suivantes entre les balises "server {}" :
location / {
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;
}
Relancer le service Nginx
Pour cela il suffit d'utiliser la commande :
/etc/init.d/nginx restart
Tester la fonction "URL's simplifiées"
Activez la fonction "URL simplifiée" depuis votre backoffice Prestaphop (Préférences => SEO & URL):
Dans votre navigateur l'URL : http://mon_site.com/index.php?id_product=4&controller=product
Devient : http://mon_site.com/robes-soiree/4-robe-imprimee.html
La réécriture d'URL fonctionne bien.