Tous les articles
Moodle

Moodle 5.2 : le routeur n’est pas correctement configuré

10 août 2026 · 7 min de lecture

izon
rizon.agency
Moodle 5.2 : le routeur n’est pas correctement configuré

Ce que l’erreur signifie le plus souvent

Quand Moodle 5.2 indique que le routeur n’est pas correctement configuré, le serveur web ne transmet généralement pas les routes inconnues vers le contrôleur r.php. Le cas typique est une URL routée qui se termine par .php et renvoie 404 Not Found, alors que Moodle attend une réponse de routeur.

Dans la discussion Moodle.org « Moodle 5.2: router is not correctly configured », le symptôme central était /lib/exampleshimroute2.php qui renvoyait 404 au lieu du 302 attendu. Le site sait exécuter PHP, mais un faux chemin PHP est intercepté avant que Moodle puisse le router.

Pourquoi Moodle 5.x insiste sur le routage

Le routeur Moodle est un contrôleur frontal. La documentation Configuring the Router indique que r.php reçoit les requêtes qui ne correspondent pas à un fichier réel.

C’est devenu plus visible depuis Moodle 5.1, parce que les requêtes publiques doivent entrer par moodle/public, tandis que le code interne et la configuration restent hors de la racine web.

Commencez par la racine du document

Si votre code Moodle est ici :

/var/www/moodle

le site public doit pointer ici :

/var/www/moodle/public

et non ici :

/var/www/moodle

Si la racine est mauvaise, les règles de routeur ne feront que masquer un problème plus profond.

Correction Apache

La configuration de base côté Apache utilise FallbackResource :

<Directory "/var/www/moodle/public">
    FallbackResource /r.php
</Directory>

Parfois, l’hôte l’autorise dans le .htaccess de public :

FallbackResource /r.php

Le piège courant avec Apache + PHP-FPM est plus subtil. Si Apache envoie toute URL qui ressemble à .php vers PHP-FPM, même quand le fichier n’existe pas, PHP-FPM peut répondre 404 avant que FallbackResource ne s’applique.

La correction consiste à n’envoyer à PHP-FPM que les vrais fichiers :

<FilesMatch ".+\.ph(?:ar|p|tml)$">
    <If "-f %{REQUEST_FILENAME}">
        SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
    </If>
</FilesMatch>

Adaptez le chemin du socket à votre serveur.

Correction Nginx

Pour Nginx, utilisez try_files :

location / {
    try_files $uri $uri/ /r.php$is_args$args;
}

Si Moodle vit dans un sous-dossier :

location /moodle/ {
    try_files $uri $uri/ /moodle/r.php$is_args$args;
}

Cette configuration doit être dans le bloc serveur. Nginx n’a pas d’équivalent .htaccess.

OpenLiteSpeed, cPanel et hébergement mutualisé

Sur des environnements de type cPanel ou OpenLiteSpeed, utilisez souvent une règle de réécriture plutôt que FallbackResource :

RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ $1/index.php [L]
 
RewriteRule ^$ ./index.php [L]
 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ r.php [L,QSA]

Placez cette règle dans le dossier public, pas dans l’ancien dossier parent.

Ordre de diagnostic

  1. Ouvrez Administration du site > Rapports > État du système.
  2. Notez le test exact qui échoue.
  3. Appelez l’URL en direct avec le navigateur ou curl -I.
  4. Identifiez qui renvoie la réponse : Apache, Nginx, PHP-FPM, Moodle, CDN ou pare-feu.
  5. Lisez les logs web et PHP-FPM au même horodatage.
  6. Corrigez la première couche qui renvoie la mauvaise réponse.
  7. Rechargez le serveur web et PHP-FPM.
  8. Purgez les caches Moodle et relancez le contrôle.

La question utile est simple : qui a renvoyé le 404 ?

Ce qu’il ne faut pas faire

Ne rendez pas tout le dossier Moodle public pour faire disparaître l’erreur. Cela annule la raison de sécurité du dossier public.

N’ajoutez pas des règles de réécriture à la fois dans le parent et dans public. Choisissez la vraie racine web.

Ne mettez pas $CFG->routerconfigured = true pour masquer un serveur mal configuré. Ce drapeau peut calmer un contrôle, mais il ne route aucune requête à la place d’Apache, Nginx ou IIS.

Si le routeur passe mais que les pages restent cassées

Continuez avec les caches, le thème Boost, les plugins tiers, la console navigateur et $CFG->wwwroot. Le routeur n’est parfois qu’une couche du problème.

Pour la séquence complète, lisez mettre Moodle 5.1 à niveau vers 5.2.

FAQ

Le routage est-il obligatoire dans Moodle 5.2 ?

La documentation Moodle indique que la configuration du routeur est obligatoire depuis Moodle 5.1.

Où se trouve le routeur Moodle ?

Le point d’entrée est r.php.

Pourquoi Moodle attend 302 mais reçoit 404 ?

Souvent parce que le serveur envoie un faux chemin .php à PHP-FPM avant que le fallback vers r.php ne puisse s’exécuter.

Écrit par Choaib Mouhrach

Fondateur et ingénieur logiciel senior

Je conçois et développe des plateformes d’apprentissage sur mesure pour les organisations dont les parcours de formation et de certification sont complexes. Plutôt que d’assembler des plugins et des outils tiers, je crée des systèmes adaptés au fonctionnement réel de chaque activité, afin de réduire la charge administrative et d’améliorer l’expérience des apprenants.

Commencer

Votre produit d'apprentissage mérite sa propre plateforme.

Si vous voulez offrir une expérience d'apprentissage construite autour de votre produit, de vos apprenants et de vos objectifs, vous êtes au bon endroit. Nous construisons des plateformes qui vous donnent le contrôle et la flexibilité pour grandir sans limites.