Récemment, j’ai du installer un Prestashop, et j’ai rencontré un problème quelque peu surprenant. En effet, en voulant naviguer dans le backoffice, seul la page d’accueil fonctionnait. Les autres pages pointaient sur une erreur 404.
La source du problème se trouve dans le système de réécriture d’URL de Symphony pour le backoffice. Une configuration est nécessaire d’être effectuée.
Si tel n’est pas le cas, vous pouvez contacter votre prestataire, ou lui envoyer le lien vers cette procédure pour dépanner.
La suite de la procédure dépend si votre serveur web fonctionne sous Apache ou Nginx
Mon serveur web fonctionne sous Apache
Si votre serveur fonctionne sur Apache, vérifier tout d’abord que le module de réécriture d’URL est actif. Il peut être activé avec la commande suivante:
sudo a2enmod rewrite
une fois fait, si la sortie indique que le module a été activé, vous pouvez recharger la configuration d’Apache avec la commande suivante:
sudo systemctl reload apache2
La suite de la procédure se trouve dans le fichier vhost du site servit par le serveur. Un modèle se trouve ici: https://devdocs.prestashop-project.org/9/basics/installation/advanced/httpd/
Une fois la configuration importée en fonction de votre serveur, il suffit d’activer le vhost (si cela n’est pas déjà fait), et de redémarrer le serveur Apache. Les problèmes devraient être résolu.
sudo systemctl a2ensite votresite.conf
sudo systemctl reload apache2
Mon serveur web fonctionne sous Nginx
Dans le cas ou votre serveur fonction sous Nginx, il n’y a pas de module à activer. En revanche, le contenu du vhost sera à adapter pour le back office.
La configuration modèle se trouve ici: https://devdocs.prestashop-project.org/9/basics/installation/advanced/nginx/
Dans cette configuration (hormis le fait qu’il faut configurer le certificat et le ServerName), il est nécessaire de définir la réécriture de l’URL pour le backoffice. Ainsi, dans le bloc suivant:
location /admin-dev/ {
try_files $uri $uri/ /admin-dev/index.php$is_args$args;
}
Il faudra remplacer admin-dev par le nom exacte du dossier admin du backoffice
Il faudra se rendre à la racine du dossier web de Prestashop pour trouver le nom du dossier.
Dans tous les cas, ce dossier commencera pas « admin-«
Ainsi, si le dossier s’appelle admin-jfddjj34743983jd, la directive sera saisi comme ci-dessous:
location /admin-jfddjj34743983jd/ {
try_files $uri $uri/ /admin-jfddjj34743983jd/index.php$is_args$args;
}
Il faut donc absolument se référer à ce qui est existant sur le serveur web.
Une fois fait, activer (si ce n’est pas déjà fait) le vhost:
sudo ln -s /etc/nginx/site-available/votresite /etc/nginx/site-enable/
Finalement, redémarrer le service Nginx pour que la configuration soit appliquée
sudo systemctl restart nginx
