Skip to content

Conversation

luskay595
Copy link
Contributor

@luskay595 luskay595 commented Jun 10, 2025

🎯 Objectif

Permettre à l'application Django de fonctionner correctement lorsqu’elle est servie derrière un reverse proxy avec un chemin personnalisé (/nomdusite) grâce à la variable FORCE_SCRIPT_NAME.

Il s'agit ici d'un bugfix + amélioration de compatibilité, qui permet d’avoir une redirection propre vers la racine, quel que soit le sous-répertoire utilisé par l'ingress Kubernetes.

🔍 Implémentation

  • Ajout de la variable FORCE_SCRIPT_NAME dans settings.py, récupérée depuis l’environnement

  • Utilisation de FORCE_SCRIPT_NAME pour ajuster dynamiquement :

    • STATIC_URL, MEDIA_URL
    • LOGIN_URL, LOGOUT_URL
    • WAGTAILADMIN_BASE_URL, WAGTAILAPI_BASE_URL (ND Sylvain : pas besoin de le faire, sinon le préfixe est doublé dans le lien. Ajout de la possibilité de définir WAGTAILADMIN_BASE_URL manuellement cela dit)
  • Mise à jour des templates suivants pour intégrer cette logique :

    • templates/404.html
    • templates/500.html
    • templates/blocks/footer.html
    • templates/blocks/header.html
  • Utilisation de {% settings_value 'FORCE_SCRIPT_NAME' %} dans les liens de navigation (ex : bouton "Retour à l’accueil")

ND Sylvain : ajustements supplémentaires :

  • Mise à jour des tests et de la CI
  • Ajout d’une doc côté dev dans ONBOARDING.md
  • Ajout de la du paramètre SF_PROD_SERVE_STATIC pour permettre de servir les fichiers statiques en production.
  • Ajout de la possibilité de définir CSRF_TRUSTED_ORIGINS manuellement
  • Ajout de la variable DSFR_USE_INTEGRITY_CHECKSUMS pour retirer les checksums d’intégrité
  • Internationalisation du fil d’Ariane
  • Ajout du bloc social_media dans quelques pages où il manquait
  • Retrait de utility.min.css dans deux pages où il était appelé en double

⚠️ Informations supplémentaires

  • La variable d’environnement FORCE_SCRIPT_NAME doit être définie dans le déploiement (ex : /monsite)
  • En local, laisser la variable vide pour un comportement classique
  • Pas besoin de migration ou de commande spécifique

@luskay595
Copy link
Contributor Author

Bonjour,
Je me permets de relancer concernant cette pull request, ouverte depuis plus d’une semaine.
Auriez-vous la possibilité de la reviewer ou de me donner un retour ? @Ash-Crow

@luskay595
Copy link
Contributor Author

Salut ,
J’ai effectué les changements demandés sur la PR. Par contre, impossible de voir les commentaires sur GitHub
Concernant la variable FORCE_SCRIPT_NAME, je n’ai pas pu la retirer complètement car elle est nécessaire pour Django, mais je l’ai remplacée par SITE_BASE_PATH là où c’était possible pour rendre le code plus cohérent.
Si vous voyez autre chose à corriger, dites-le moi !

@Ash-Crow
Copy link
Collaborator

Ash-Crow commented Jul 9, 2025

Merci ! Je vais tester ça dès que possible

@Ash-Crow Ash-Crow changed the title Implement dynamic redirects based on site path in ingress Permettre d’utiliser le site depuis un sous-domaine Aug 26, 2025
@Ash-Crow Ash-Crow changed the title Permettre d’utiliser le site depuis un sous-domaine Permettre d’installer un site dans un sous-répertoire plutôt qu'à la racine Aug 26, 2025
@Ash-Crow Ash-Crow closed this Aug 26, 2025
@Ash-Crow Ash-Crow reopened this Aug 26, 2025
@Ash-Crow Ash-Crow changed the base branch from production to main August 26, 2025 13:04
@Ash-Crow
Copy link
Collaborator

Ash-Crow commented Aug 27, 2025

Bonjour,

Cela ne semble pas fonctionner.

Si je mets SITE_BASE_PATH="/nomdusite" dans le .env

  • à la racine http://sites-faciles.localhost:8008/, le site est servi mais pas les media et static

  • au chemin indiqué http://sites-faciles.localhost:8008/nomdusite/, il ne trouve pas la page et semble tenter de faire la redirection... à l'envers.

Edit : c'est corrigé.

@Ash-Crow
Copy link
Collaborator

Ash-Crow commented Sep 2, 2025

Salut , J’ai effectué les changements demandés sur la PR. Par contre, impossible de voir les commentaires sur GitHub Concernant la variable FORCE_SCRIPT_NAME, je n’ai pas pu la retirer complètement car elle est nécessaire pour Django, mais je l’ai remplacée par SITE_BASE_PATH là où c’était possible pour rendre le code plus cohérent. Si vous voyez autre chose à corriger, dites-le moi !

Finalement, j'ai remis FORCE_SCRIPT_NAME en laissant le commentaire expliquant le pourquoi du nom de la variable.

J'ai également fait pas mal de corrections au code et ajouté la documentation ainsi qu'un moyen de tester.

@Ash-Crow Ash-Crow requested a review from Luzzzi September 8, 2025 10:05
Copy link
Collaborator

@Luzzzi Luzzzi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ça me semble ok mais pas testé en local du coup !

@Ash-Crow Ash-Crow merged commit f998a02 into numerique-gouv:main Sep 11, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants