Что ж, @hellekin решил, что это заслуживает отдельной темы. Я не совсем уверен, что оно уже готово для этого, но вот оно. На следующей неделе в начале недели я займусь этим и постараюсь сделать так, чтобы это выглядело как что-то, чем действительно смогут воспользоваться другие люди.
добавить конфигурацию Nginx для сопоставления с HTML-файлом:
location = /TransHack_·Xist·nce… {
default_type text/html;
alias /srv/www/zoethical.org/thx/home.html;
}
Прямой вызов файла работает, но обращение к https://thx.zoethical.org не работает. Заметив проверку постоянных ссылок, я попытался добавить постоянную ссылку для /. Но это тоже не помогло. Может ли это быть связано с кэшем?
Редактирование: Думаю, это может быть связано с тем, что для доступа к экземпляру требуется вход в систему (SSO), и в этом случае возникает сбой. Я готов провести дополнительные тесты, в том числе сделать экземпляр более открытым. После того как сайт стал общедоступным, при переходе на главную страницу я всё ещё получаю сообщение «Ой! Страница не существует или является приватной». Есть какие-то идеи, почему это происходит?
О, значит, файл должен быть по умолчанию — обычно 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. Тарада!
На самом деле ошибка сохраняется: хотя вызов URL https://thx.zoethical.org работает извне, после входа в Discourse нажатие на логотип не приводит к возврату на переопределённую страницу. Я заметил проверку постоянных ссылок (permalink), поэтому попробовал несколько вариантов, все из которых не сработали:
создать постоянную ссылку с https://thx.zoethical.org на /index.html
создать постоянную ссылку с https://thx.zoethical.org на /TransHack_·Xist·nce…
скомбинировать это с постоянной ссылкой с /index.html на /TransHack_·Xist·nce…
удалить перенаправление на /TransHack_·Xist·nce… в конфигурации фронтенда
создать постоянную ссылку custom_url и указать на внешний URL
Полагаю, проблема в том, что скрипт при нажатии на логотип не пытается перезагрузить всё приложение, а ожидает, что к верхнему пути будет прикреплена внутренняя ссылка.
Я ожидал, что если либо homepage_url_override, либо постоянная ссылка (например, custom_url) указывает на абсолютный URL, то страница будет полностью перезагружена.