Разрешить произвольную домашнюю страницу (от Jay Pfaffman)

Что ж, @hellekin решил, что это заслуживает отдельной темы. Я не совсем уверен, что оно уже готово для этого, но вот оно. На следующей неделе в начале недели я займусь этим и постараюсь сделать так, чтобы это выглядело как что-то, чем действительно смогут воспользоваться другие люди. :wink:

Как он сказал:

17 лайков

@pfaffman Я попробовал использовать следующую настройку:

  1. установить ваш компонент темы
  2. установить home_url_override в https://thx.zoethical.org/TransHack_·Xist·nce…
  3. добавить конфигурацию Nginx для сопоставления с HTML-файлом:
        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/home.html;
        }

Прямой вызов файла работает, но обращение к https://thx.zoethical.org не работает. Заметив проверку постоянных ссылок, я попытался добавить постоянную ссылку для /. Но это тоже не помогло. Может ли это быть связано с кэшем?

К сведению, вот содержимое файла 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">Агора</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">Фондерия фикции</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>

Редактирование: Думаю, это может быть связано с тем, что для доступа к экземпляру требуется вход в систему (SSO), и в этом случае возникает сбой. Я готов провести дополнительные тесты, в том числе сделать экземпляр более открытым. После того как сайт стал общедоступным, при переходе на главную страницу я всё ещё получаю сообщение «Ой! Страница не существует или является приватной». Есть какие-то идеи, почему это происходит?

3 лайка

Это главная страница, которую вы настраиваете на своём сайте Discourse? Думаю, вам нужно указать только URL, начинающийся с /.

2 лайка

О, значит, файл должен быть по умолчанию — обычно index.html?

Действительно, работает! Компонент ожидает, что URL будет указывать на файл index, верно?

Мне просто нужно было переименовать home.html в index.html и изменить конфигурацию Nginx следующим образом:

        # больше настроек...
        root   /srv/www/zoethical.org/thx;
        index  index.html; # <- это важно

        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/index.html; # <- и соответствует
        }
        location / {
                # магия nginx: сначала пробуем локальный файл, затем проксируем...
                try_files $uri $uri/ $uri.html @discourse;
        }
        location @discourse {
                # обычный прокси для Discourse
        }

Итак, подводя итог…

Если вы используете статическую страницу на том же сайте, что и экземпляр Discourse, убедитесь, что ваш веб-сервер сначала обрабатывает статические файлы (например, связанные CSS-файлы), прежде чем перенаправлять запросы в Discourse. Тарада!

Спасибо, @pfaffman!

3 лайка

На самом деле ошибка сохраняется: хотя вызов URL https://thx.zoethical.org работает извне, после входа в Discourse нажатие на логотип не приводит к возврату на переопределённую страницу. Я заметил проверку постоянных ссылок (permalink), поэтому попробовал несколько вариантов, все из которых не сработали:

  1. создать постоянную ссылку с https://thx.zoethical.org на /index.html
  2. создать постоянную ссылку с https://thx.zoethical.org на /TransHack_·Xist·nce…
  3. скомбинировать это с постоянной ссылкой с /index.html на /TransHack_·Xist·nce…
  4. удалить перенаправление на /TransHack_·Xist·nce… в конфигурации фронтенда
  5. создать постоянную ссылку custom_url и указать на внешний URL

Полагаю, проблема в том, что скрипт при нажатии на логотип не пытается перезагрузить всё приложение, а ожидает, что к верхнему пути будет прикреплена внутренняя ссылка.

Я ожидал, что если либо homepage_url_override, либо постоянная ссылка (например, custom_url) указывает на абсолютный URL, то страница будет полностью перезагружена.

2 лайка