Consenti homepage arbitraria (di Jay Pfaffman)

Beh, @hellekin ha pensato che questo meritasse un proprio argomento. Non sono sicuro che sia pronto per questo, ma eccolo. Darò un’occhiata alle cose all’inizio della prossima settimana e cercherò di assicurarmi che sembri qualcosa che altre persone possano davvero utilizzare. :wink:

Come ha detto lui:

17 Mi Piace

@pfaffman Ho provato a utilizzare la seguente configurazione:

  1. installa il tuo componente tema
  2. imposta home_url_override su https://thx.zoethical.org/TransHack_·Xist·nce…
  3. aggiungi una configurazione Nginx per abbinare il file HTML:
        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/home.html;
        }

Chiamare direttamente il file funziona, ma l’accesso a https://thx.zoethical.org fallisce. Avendo notato un controllo sui permalink, ho provato ad aggiungere un permalink per /. Ma non ha funzionato nemmeno in quel caso. Potrebbe essere un problema di cache?

Per tua informazione, ecco il contenuto del file 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>

Modifica: Penso che possa dipendere dal fatto che l’istanza richiede l’accesso (SSO), e in tal caso c’è un malfunzionamento. Potrei essere disposto a effettuare ulteriori test, incluso rendere l’istanza leggermente più accessibile. Dopo aver reso il sito pubblico, ottengo ancora “Oops! Quella pagina non esiste o è privata” quando provo ad accedere alla home page. Qualche idea sul perché?

3 Mi Piace

Stai impostando la home page del tuo sito Discourse? Credo che tu voglia inserire solo l’URL che inizia con la /.

2 Mi Piace

Oh, quindi il file dovrebbe essere quello predefinito – di solito index.html?

Funziona davvero! Il componente si aspetta che l’URL sia un file index, giusto?

Ho dovuto semplicemente rinominare il mio home.html in index.html e modificare la configurazione di Nginx così:

        # più configurazione...
        root   /srv/www/zoethical.org/thx;
        index  index.html; # <--- questo è importante

        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/index.html; # <--- e corrisponde
        }
        location / {
                # la magia di nginx per provare il file locale prima di fare il proxy...
                try_files $uri $uri/ $uri.html @discourse;
        }
        location @discourse {
                # normale proxy per Discourse
        }

Quindi, per riassumere…

Se stai usando una pagina statica sullo stesso sito dell’istanza di Discourse, assicurati che il tuo server Web legga i file statici – ad esempio, i CSS correlati – prima di inoltrare le richieste a Discourse. E voilà!

Grazie @pfaffman!

3 Mi Piace

In realtà rimane un bug: sebbene l’URL https://thx.zoethical.org funzioni dall’esterno, una volta dentro Discourse, cliccando sul logo non si viene reindirizzati alla pagina sovrascritta. Ho notato un controllo sui permalink, quindi ho provato diverse opzioni, che hanno tutte fallito:

  1. creare un permalink da https://thx.zoethical.org a /index.html
  2. creare un permalink da https://thx.zoethical.org a /TransHack_·Xist·nce…
  3. combinare questi con un permalink da /index.html a /TransHack_·Xist·nce…
  4. rimuovere il reindirizzamento a /TransHack_·Xist·nce… nella configurazione del frontend
  5. creare un permalink custom_url e puntarlo a un URL esterno

Immagino che il problema derivi dal fatto che lo script non tenta di ricaricare l’intera applicazione quando si clicca sul logo, ma si aspetta che un link interno sia associato al percorso principale.

Mi aspetterei che, quando sia homepage_url_override sia un permalink (ad esempio custom_url) puntano a un URL assoluto, la pagina venga ricaricata completamente.

2 Mi Piace