Prestashop: résoudre le problème d’erreur 404 dans le backoffice

Prestashop: résoudre le problème d’erreur 404 dans le backoffice

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.

Cette solution sera utile si vous hébergez vous-même votre instance Prestashop, ou encore si vous gérez vous-même la configuration du serveur Web.
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

Ce donner est nommer de manière aléatoire une fois l’installation réalisée.
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;
    }
Chaque installation de Prestashop renomme de manière unique ce dossier.
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/
Remplacer votresite par le nombre de votre fichier de configuration

Finalement, redémarrer le service Nginx pour que la configuration soit appliquée

sudo systemctl restart nginx