Permitir Página Inicial Arbitrária (por Jay Pfaffman)

Bem, @hellekin achou que isso merecia seu próprio tópico. Não tenho certeza se está pronto para isso, mas aqui está. Vou dar uma olhada nas coisas no início da próxima semana e tentar garantir que pareça algo que outras pessoas possam realmente usar. :wink:

Como ele disse:

17 curtidas

@pfaffman Tentei usar a seguinte configuração:

  1. Instalei o componente do seu tema
  2. Defini home_url_override para https://thx.zoethical.org/TransHack_·Xist·nce…
  3. Adicionei uma configuração do Nginx para corresponder ao arquivo HTML:
        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/home.html;
        }

Chamar o arquivo diretamente funciona, mas acessar https://thx.zoethical.org falha. Como notei uma verificação em permalinks, tentei adicionar um permalink para /. Mas também não funcionou. Isso pode ser um problema de cache?

FYI, aqui está o conteúdo do arquivo 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>

Edição: Acho que pode ser devido ao fato de a instância exigir login (SSO), então há uma falha nesse caso. Posso estar disposto a fazer mais testes, incluindo abrir um pouco mais a instância. Após deixar o site público, ainda recebo “Ops! Essa página não existe ou é privada.” ao acessar a página inicial. Alguma ideia do porquê?

3 curtidas

É a página inicial que você está configurando no seu site Discourse? Acredito que você queira colocar apenas a URL começando com /.

2 curtidas

Ah, então o arquivo deve ser o padrão — geralmente index.html?

De fato, funciona! O componente espera que a URL seja um arquivo index, certo?

Bastou renomear meu home.html para index.html e alterar a configuração do Nginx para:

        # mais configuração...
        root   /srv/www/zoethical.org/thx;
        index  index.html; # <- isso é importante

        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/index.html; # <- e corresponde
        }
        location / {
                # mágica do nginx para tentar o arquivo local antes de fazer o proxy...
                try_files $uri $uri/ $uri.html @discourse;
        }
        location @discourse {
                # proxy normal do Discourse
        }

Então, para resumir…

Se você estiver usando uma página estática no mesmo site que a instância do Discourse, certifique-se de que seu servidor web leia o(s) arquivo(s) estático(s) — por exemplo, CSS relacionado — antes de encaminhar as solicitações para o Discourse. Tadaa!

Obrigado, @pfaffman!

3 curtidas

Na verdade, um bug persiste: embora acessar a URL https://thx.zoethical.org funcione externamente, ao clicar no logotipo dentro do Discourse, a página sobrescrita não é carregada novamente. Notei uma verificação de permalink, então tentei várias opções, todas sem sucesso:

  1. criar um permalink de https://thx.zoethical.org para /index.html
  2. criar um permalink de https://thx.zoethical.org para /TransHack_·Xist·nce…
  3. combinar esses com um permalink de /index.html para /TransHack_·Xist·nce…
  4. remover o redirecionamento para /TransHack_·Xist·nce… na configuração do frontend
  5. criar um permalink custom_url e apontá-lo para uma URL externa

Acho que o problema ocorre porque o script não tenta recarregar todo o aplicativo ao clicar no logotipo, mas espera que um link interno esteja vinculado ao caminho superior.

Espero que, quando o homepage_url_override ou um permalink (por exemplo, custom_url) aponte para uma URL absoluta, a página seja totalmente recarregada.

2 curtidas