¿Cómo puedo usar redirecciones dinámicas?

Estoy migrando desde Vanilla a Discourse y hemos decidido empezar de cero en lugar de importar 8 años de temas. El sitio actual es forums.29th.org, así que pienso que, una vez que Discourse esté completamente operativo, haré que forums.29th.org apunte a Discourse y moveré Vanilla a otra dirección, como vanilla.29th.org (de hecho, estoy teniendo dificultades para pensar en una buena convención de URLs, ya que en este punto tenemos varios foros antiguos).

Por lo tanto, me gustaría redirigir las solicitudes que coincidan con el patrón de URLs de Vanilla a otro dominio. Esto sería muy fácil con una regla de nginx, pero (a) quería verificar si es posible usar una función integrada de Discourse, como Permalinks, y (b) si no, quería preguntar cómo debo editar la configuración de nginx de la manera correcta (sería genial si pudiera controlarla con versionado también).

Para dar contexto, las URLs de los temas en Vanilla se ven así:

/discussion/42206/example-topic#latest

¡Gracias!

Usaría una regla de nginx para redirigir /discussion al dominio nuevo/antiguo. (Y yo importaría los datos antiguos, pero eso es como gano la vida)

@pfaffman Gracias, pero ¿cómo puedo averiguar dónde editar la regla de nginx? ¿Necesito ejecutar launcher enter app y modificar el archivo en /etc/nginx/nginx.conf o algo así? Asumiendo que son contenedores efímeros, habría esperado editar algo controlado por versiones, ¿es eso posible?

Puedes agregar cosas a tu app.yml para modificar la configuración de nginx (o ejecutar una externa). No estoy seguro de cuál es la mejor manera de enviarte esto. Aquí tienes un ejemplo de cómo realizar algunos cambios en la configuración de nginx con otro propósito:

  after_ssl:
   # no redirigir todos los hosts de nuevo al nombre de dominio principal
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /if \(\$http_host[^\}]*\}/m
        to: ""
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: /return 301.*$/
        to: "return 301 https://$host$request_uri;"

Perfecto, eso es exactamente lo que necesitaba ver. ¡Gracias! ¿Hay algún lugar donde esté documentado este tipo de cosas para que pudiera haberlo consultado?

1 me gusta

Para cualquiera que haya llegado aquí, lo implementé conectándome por SSH a mi servidor, navegando a /var/discourse, abriendo containers/app.yml con vim y desplazándome hasta la sección hooks. Luego agregué este fragmento:

hooks: # esta línea ya debería estar ahí
  after_ssl:
    - replace:
        filename: "/etc/nginx/conf.d/discourse.conf"
        from: "location @discourse {"
        to: |
          location /discussion/ {
            return 301 https://vanilla.29th.org$request_uri;
          }

          location @discourse {
  after_code: # esta línea ya debería estar ahí
1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.