Caminhos relativos do site reescritos incorretamente no lado do cliente com subpasta

Isso estava funcionando corretamente, mas uma atualização recente parece tê-lo quebrado novamente.

Adicionando um link relativo

[Histórico de alterações da versão 1.9.2 completa](/downloads/continuaci/continua-ci-version-history-v192)

o link é renderizado corretamente e a marcação também está correta. No entanto, ao clicar nele, o link se transforma em:

https://www.finalbuilder.com/forums/downloads/continuaci/continua-ci-version-history-v192

Note que nossa instância do Discourse está instalada como uma subpasta em forums.

Parece que houve algumas alterações nessa área no início deste ano, o que pode estar relacionado.

Atualmente executando a versão 2.8 beta1 - https://github.com/discourse/discourse/commits/28e201f3919e23d734a5414f18dbf83d1d52a5e0

3 curtidas

Acho que é justo assumir que qualquer link relativo é relativo à raiz da subpasta. Então, se você quiser um link fora do fórum, precisará usar a URL totalmente qualificada.

Alternativamente, acho que você pode configurar um roteamento de permalink /forum/downloads/* para https://example.com/downloads/*.

2 curtidas

Isso funcionava antes, por que foi alterado?

Eu não esperaria que isso fosse o comportamento normal quando o caminho relativo está ancorado, ou seja, /downloads — no mundo HTML/HTTP, isso sugere a raiz do site, não a raiz da subpasta.

1 curtida

Então, se você tivesse um link no seu site principal começando com /t/algo, como saberia se era um link do Discourse ou um link para o seu próprio site principal?

1 curtida

Isso seria escrito como /forums/t/something. É isso que um usuário público ao escrever uma postagem no fórum esperaria. É assim que a maioria dos sites funciona — por que alguém saberia digitar /t/something?

1 curtida

Concordo com @RGJ aqui. Compartilhar o mesmo prefixo de subpasta entre vários aplicativos é apenas pedir problemas.

Para mim, é um “não será corrigido”.

2 curtidas

Sério? Se você escrever uma URL começando com /, então por design ela está na raiz do site — você está redefinindo como os links HTML funcionam?

Isso funcionava perfeitamente por 2,5 anos no nosso site — até a recente mudança disruptiva.

1 curtida

Esse é o problema: o Discourse está adicionando o mesmo prefixo /forums a vários aplicativos, e isso está causando os problemas mencionados acima. Não entendo por que você precisa alterar a URL inserida em uma postagem de qualquer forma?

1 curtida

Estamos investigando este problema, que possivelmente está relacionado a esta correção:

Concordo que os links para /jobs em acme.com devem levar a acme.com/jobs, independentemente da configuração de subpasta. Eles não devem levar a acme.com/forum/jobs.

7 curtidas

Fiz o último commit em get-url.js, algum tempo após o commit vinculado.

Concordo que links não devem ser reescritos se forem inseridos pelo usuário; talvez getURL não deva ser chamado nesses cenários? Acredito que getURL seja destinado a ser usado para rotas padrão do Discourse para “convertê-las” para a configuração de subpasta; ele possui alguns testes que esperam explicitamente esse prefixo de subpasta:

Por favor, avise se eu puder ajudar em algo.

Investiguei isso esta tarde e tenho uma correção neste PR:

Infelizmente, nosso código routeTo foi projetado para funcionar com URLs relativas. Então, se chamarmos url.routeTo("/cool") e houver uma subpasta sub configurada, ele reescreverá para /sub/cool, mesmo que /cool pareça relativo. Não acho que isso esteja correto, mas aposto que muito código depende disso.

Felizmente, neste caso, foi o rastreador de cliques que estava redirecionando porque achava que a URL era interna. Adicionei uma verificação para garantir que o link interno esteja no mesmo prefixo e limpei os testes. Parece que está funcionando.

Não faço ideia de como isso regrediu — tentei usar git blame e não obtive resultados.

6 curtidas

Não tenho certeza se isso está relacionado ou não, mas após baixar a atualização, o editor de links parou de funcionar (aparece vazio ou não separa os campos).

Isso parece ser pior.

Se eu adicionar um link
[link relativo do fórum](/forums/t/continua-ci-v1-9-2-664-released/7058)

ele acaba ficando assim:
[link relativo do fórum](https:///forums/t/continua-ci-v1-9-2-664-released/7058)

o que é renderizado sem o atributo href

A propósito, os testes acima foram realizados com Commits · discourse/discourse · GitHub

Também notamos que links relativos para o mesmo site, como /downloads, são tratados como links externos e abrem em uma nova aba do navegador. Isso não é realmente um grande problema.

Além disso, também não é algo grave, mas se você remover o ID da postagem do final de um link para uma postagem no fórum, como fiz, o histórico do navegador é perdido ao clicar no link, por exemplo, este link.

Infelizmente, não consigo reproduzir isso. Localmente, quando uso exatamente o mesmo link, ele funciona corretamente. Devo também acrescentar que meu patch não deve alterar a forma como os links são escritos em HTML; ele apenas lida com o que acontece quando você clica em um link.

Acredito que isso já está sendo analisado, obrigado:

2 curtidas