Beliebige Startseite zulassen (von Jay Pfaffman)

Nun, @hellekin war der Meinung, dass dies ein eigenes Thema verdient. Ich bin mir nicht ganz sicher, ob es dafür schon bereit ist, aber hier ist es. Ich werde Anfang nächster Woche einen Blick darauf werfen und versuchen, sicherzustellen, dass es etwas ist, das andere Menschen wirklich nutzen können. :wink:

Wie er sagte:

17 „Gefällt mir“

@pfaffman Ich habe versucht, folgendes Setup zu verwenden:

  1. Deine Theme-Komponente installieren
  2. home_url_override auf https://thx.zoethical.org/TransHack_·Xist·nce… setzen
  3. Eine Nginx-Konfiguration hinzufügen, die zur HTML-Datei passt:
        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/home.html;
        }

Das direkte Aufrufen der Datei funktioniert, aber https://thx.zoethical.org schlägt fehl. Da ich eine Prüfung auf Permalinks bemerkt habe, habe ich versucht, einen Permalink für / hinzuzufügen. Das hat aber auch nicht funktioniert. Könnte dies ein Problem mit dem Cache sein?

Zur Information, hier ist der Inhalt der home.html-Datei:

<!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: Ich vermute, das liegt daran, dass die Instanz eine Anmeldung (SSO) erfordert, und in diesem Fall liegt eine Funktionsstörung vor. Ich könnte bereit sein, weitere Tests durchzuführen, einschließlich einer etwas offeneren Einstellung der Instanz. Auch nach dem Rendern der öffentlichen Seite erhalte ich weiterhin die Meldung „Ups! Diese Seite existiert nicht oder ist privat“, wenn ich die Startseite aufrufe. Hast du eine Idee, warum das so ist?

3 „Gefällt mir“

Ist das die Startseite, die du auf deiner Discourse-Seite einstellst? Ich denke, du möchtest einfach nur die URL eingeben, die mit einem / beginnt.

2 „Gefällt mir“

Ah, die Datei sollte also standardmäßig index.html sein?

Tatsächlich funktioniert es! Die Komponente erwartet also, dass die URL auf eine index-Datei verweist, richtig?

Ich musste lediglich meine home.html in index.html umbenennen und die Nginx-Konfiguration wie folgt anpassen:

        # weitere Konfiguration...
        root   /srv/www/zoethical.org/thx;
        index  index.html; # <- das ist wichtig

        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/index.html; # <- und passt dazu
        }
        location / {
                # Nginx-Trick: zuerst lokale Datei versuchen, dann proxyen...
                try_files $uri $uri/ $uri.html @discourse;
        }
        location @discourse {
                # normaler Discourse-Proxy
        }

Zusammenfassung…

Wenn du eine statische Seite auf derselben Domain wie die Discourse-Instanz verwendest, stelle sicher, dass dein Webserver die statischen Datei(en) – z. B. zugehöriges CSS – ausliest, bevor er die Anfragen an Discourse weiterleitet. Tadaa!

Vielen Dank @pfaffman!

3 „Gefällt mir“

Tatsächlich bleibt ein Fehler bestehen: Obwohl der Aufruf der URL https://thx.zoethical.org von außen funktioniert, führt ein Klick auf das Logo innerhalb von Discourse nicht dazu, dass die überschriebene Seite wieder geladen wird. Ich habe eine Permalink-Prüfung bemerkt und habe daher mehrere Optionen ausprobiert, die alle gescheitert sind:

  1. Einen Permalink von https://thx.zoethical.org zu /index.html erstellen
  2. Einen Permalink von https://thx.zoethical.org zu /TransHack_·Xist·nce… erstellen
  3. Diese mit einem Permalink von /index.html zu /TransHack_·Xist·nce… kombinieren
  4. Die Weiterleitung zu /TransHack_·Xist·nce… in der Frontend-Konfiguration entfernen
  5. Einen custom_url-Permalink erstellen und auf eine externe URL verweisen lassen

Ich vermute, das Problem liegt daran, dass das Skript beim Klick auf das Logo nicht versucht, die gesamte Anwendung neu zu laden, sondern erwartet, dass ein interner Link mit dem obersten Pfad verknüpft ist.

Ich würde erwarten, dass entweder die homepage_url_override oder ein (z. B. custom_url) Permalink, der auf eine absolute URL zeigt, dazu führt, dass die Seite vollständig neu geladen wird.

2 „Gefällt mir“