# Permitir página de inicio arbitraria (por Jay Pfaffman)

**URL:** https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459
**Category:** Theme component
**Created:** [23 Mayo, 2020 16:07 UTC](https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459 "2020-05-23T16:07:12Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [23 Mayo, 2020 16:07 UTC](https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459/1 "2020-05-23T16:07:12Z")

</div>

> **[GitHub - pfaffman/discourse-allow-arbitrary-homepage: allow an admin to specify the default homepage to...](https://github.com/pfaffman/discourse-allow-arbitrary-homepage)**
>
> allow an admin to specify the default homepage to any URL.

Bueno, @hellekin pensó que esto merecía su propio tema. No estoy muy seguro de que esté listo para ello, pero aquí está. Revisaré las cosas a principios de la próxima semana y trataré de asegurarme de que parezca algo que otras personas puedan realmente utilizar. 😉

Como él dijo:

> [@hellekin](#):
>
> En el nuevo tema [Page Publishing - #19](https://meta.discourse.org/t/page-publishing/151971/19?u=hellekin), @pfaffman presentó un componente de tema que permite a un administrador cambiar la página de inicio predeterminada de una instancia de Discourse por cualquier URL. Dado que no pude encontrar un tema relacionado —y el “missing\_url” en el `about.json` parece confirmar que aún no existe—, ¡aquí está!

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [23 Mayo, 2020 16:12 UTC](https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459/2 "2020-05-23T16:12:34Z")

</div>

@pfaffman He intentado usar la siguiente configuración:

1. instalar tu componente de tema
2. establecer `home_url_override` en [https://thx.zoethical.org/TransHack\_·Xist·nce…](https://thx.zoethical.org/TransHack_%C2%B7Xist%C2%B7nce%E2%80%A6)
3. agregar alguna configuración de Nginx para coincidir con el archivo HTML:

```ini
        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/home.html;
        }

```

Llamar al archivo directamente funciona, pero llamar a [https://thx.zoethical.org](https://thx.zoethical.org) falla. Como noté una verificación en los enlaces permanentes, intenté agregar uno para `/`. Pero tampoco funcionó. ¿Podría ser un problema con la caché?

Por si acaso, aquí está el contenido del archivo `home.html`:

```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>

```

**Edición** : Creo que podría deberse a que la instancia requiere iniciar sesión (SSO), y en ese caso hay un mal funcionamiento. Podría estar dispuesto a realizar más pruebas, incluyendo abrir un poco más la instancia. Después de hacer el sitio público, aún obtengo “¡Ups! Esa página no existe o es privada” al acceder a la página de inicio. ¿Alguna idea de por qué?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [23 Mayo, 2020 16:57 UTC](https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459/3 "2020-05-23T16:57:19Z")

</div>

¿Es la página de inicio la que estás configurando en tu sitio de Discourse? Creo que solo quieres poner la URL que comienza con /.

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [23 Mayo, 2020 16:58 UTC](https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459/4 "2020-05-23T16:58:55Z")

</div>

Ah, ¿entonces el archivo debería ser el predeterminado, normalmente `index.html`?

¡De hecho, funciona! ¿El componente espera que la URL sea un archivo `index`, verdad?

Solo tuve que renombrar mi `home.html` a `index.html` y cambiar la configuración de Nginx a:

```ini
        # más configuración...
        root /srv/www/zoethical.org/thx;
        index index.html; # <- esto es importante

        location = /TransHack_·Xist·nce… {
                default_type text/html;
                alias /srv/www/zoethical.org/thx/index.html; # <- y coincide
        }
        location / {
                # magia de nginx para probar el archivo local antes de hacer proxy...
                try_files $uri $uri/ $uri.html @discourse;
        }
        location @discourse {
                # proxy normal de Discourse
        }

```

## Entonces, para resumir…

Si estás usando una página estática en el mismo sitio que la instancia de Discourse, asegúrate de que tu servidor web lea los archivos estáticos (por ejemplo, CSS relacionados) antes de hacer proxy de las solicitudes a Discourse. ¡Tadaa!

¡Gracias @pfaffman!

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [11 Agosto, 2020 19:29 UTC](https://meta.discourse.org/t/allow-arbitrary-homepage-by-jay-pfaffman/152459/5 "2020-08-11T19:29:18Z")

</div>

De hecho, queda un error: aunque acceder a la URL [https://thx.zoethical.org](https://thx.zoethical.org) funciona desde el exterior, una vez dentro de Discourse, al hacer clic en el logotipo no se carga la página sobrescrita. Noté una verificación de enlace permanente, así que probé varias opciones, todas sin éxito:

1. Crear un enlace permanente desde `https://thx.zoethical.org` hacia `/index.html`.
2. Crear un enlace permanente desde `https://thx.zoethical.org` hacia `/TransHack_·Xist·nce…`.
3. Combinar ambos con un enlace permanente desde `/index.html` hacia `/TransHack_·Xist·nce…`.
4. Eliminar la redirección hacia `/TransHack_·Xist·nce…` en la configuración del frontend.
5. Crear un enlace permanente de tipo `custom_url` y apuntarlo a una URL externa.

Supongo que el problema se debe a que el script no intenta recargar toda la aplicación al hacer clic en el logotipo, sino que espera que haya un enlace interno asociado a la ruta superior.

Me esperaría que, ya sea que `homepage_url_override` o un enlace permanente (por ejemplo, `custom_url`) apunte a una URL absoluta, la página se recargue completamente.
