Autoriser une page d'accueil arbitraire (par Jay Pfaffman)

Eh bien, @hellekin pensait que cela méritait son propre sujet. Je ne suis pas tout à fait sûr qu’il soit prêt pour cela, mais le voici. Je jetterai un coup d’œil aux choses début la semaine prochaine et essaierai de m’assurer qu’il ressemble à quelque chose que d’autres personnes pourraient vraiment utiliser. :wink:

Comme il l’a dit :

17 « J'aime »

@pfaffman J’ai essayé d’utiliser la configuration suivante :

  1. installer votre composant de thème
  2. définir home_url_override sur https://thx.zoethical.org/TransHack_·Xist·nce…
  3. ajouter une configuration Nginx pour correspondre au fichier HTML :
        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/home.html;
        }

L’appel direct au fichier fonctionne, mais l’accès à https://thx.zoethical.org échoue. Ayant remarqué une vérification des permaliens, j’ai essayé d’ajouter un permalien pour /. Cela n’a pas fonctionné non plus. Cela pourrait-il être un problème de cache ?

FYI, voici le contenu du fichier home.html :

<!DOCTYPE html>
<html>
        <head>
                <meta charset="UTF-8">
                <title> TransHack ·Xist·nce… </title>
                <link rel="stylesheet" href="/thx.css">
        </head>
        <body class="thx home">
                <header>
                        <h1>THX</h1>
                </header>
                <section id="agora">
                        <h2><a href="https://thx.zoethical.org/c/agora/1">Agora</a></h2>
                        <d-topics-list discourse-url="https://thx.zoethical.org" per-page="5" category="1"></d-topics-list>
                </section>
                <section id="fonderie-de-fiction">
                        <h2><a href="https://thx.zoethical.org/c/fonderie-de-fiction/7">Fonderie de fiction</a></h2>
                        <d-topics-list discourse-url="https://thx.zoethical.org" per-page="5" category="7"></d-topics-list>
                </section>
                <script src="https://thx.zoethical.org/javascripts/embed-topics.js"></script>
        </body>
</html>

Edit : Je suppose que cela pourrait être dû au fait que l’instance nécessite une connexion (SSO), ce qui entraîne un dysfonctionnement dans ce cas. Je pourrais être disposé à effectuer plus de tests, notamment en ouvrant un peu plus l’instance. Après avoir rendu le site public, je reçois toujours le message « Oops! That page doesn’t exist or is private. » (« Oups ! Cette page n’existe pas ou est privée. ») lorsque j’accède à la page d’accueil. Une idée de la raison ?

3 « J'aime »

Est-ce la page d’accueil que vous configurez sur votre site Discourse ? Je pense que vous voulez simplement mettre l’URL commençant par /.

2 « J'aime »

Ah, donc le fichier doit être le fichier par défaut — généralement index.html ?

En effet, cela fonctionne ! Le composant s’attend à ce que l’URL pointe vers un fichier index, n’est-ce pas ?

J’ai simplement dû renommer mon home.html en index.html et modifier la configuration Nginx comme suit :

        # plus de configuration...
        root   /srv/www/zoethical.org/thx;
        index  index.html; # <- c'est important

        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/index.html; # <- et cela correspond
        }
        location / {
                # la magie nginx pour essayer le fichier local avant de faire le proxy...
                try_files $uri $uri/ $uri.html @discourse;
        }
        location @discourse {
                # proxy normal pour Discourse
        }

Pour résumer…

Si vous utilisez une page statique sur le même site que l’instance Discourse, assurez-vous que votre serveur web lit le(s) fichier(s) statique(s) — par exemple, les CSS associés — avant de faire le proxy des requêtes vers Discourse. Et voilà !

Merci @pfaffman !

3 « J'aime »

En fait, un bogue persiste : bien que l’URL https://thx.zoethical.org soit accessible depuis l’extérieur, une fois dans Discourse, cliquer sur le logo ne ramène pas vers la page remplacée. J’ai remarqué une vérification de permalien, alors j’ai essayé plusieurs options, qui ont toutes échoué :

  1. Créer un permalien de https://thx.zoethical.org vers /index.html
  2. Créer un permalien de https://thx.zoethical.org vers /TransHack_·Xist·nce…
  3. Combiner ceux-ci avec un permalien de /index.html vers /TransHack_·Xist·nce…
  4. Supprimer la redirection vers /TransHack_·Xist·nce… dans la configuration du frontend
  5. Créer un permalien custom_url et le pointer vers une URL externe

Je suppose que le problème vient du fait que le script ne tente pas de recharger l’application entière lors du clic sur le logo, mais s’attend à ce qu’un lien interne soit attaché au chemin de niveau supérieur.

Je m’attendrais à ce que, lorsque homepage_url_override ou un permalien (par exemple custom_url) pointe vers une URL absolue, la page soit entièrement rechargée.

2 « J'aime »