Precisa de URLs relativas para imagens carregadas

How can I get Discourse to generate relative URLs for uploaded images?

I have a site that is available over HTTPS and a TOR .onion and I need a way to get images working for both.

How can I configure Discourse so that upload:// URLs are converted to relative URLs in the <img> tag? Where (which source file) does this URL generation take place?

I don’t think relative image URLs is a supported configuration, and that might be a very difficult change cc @sam

1 curtida

Just to clarify:

Uploading works correctly both from the HTTPS domain and the TOR hidden service .onion but the actual HTML generated for a post uses a full URL which is a problem.

I’m assuming somewhere there is some code that does something like

 '<img src="' + Discourse.base_url_no_prefix + '/uploads/....jpg' + '">'

and I need it to generate

 '<img src="' + '/uploads/....jpg' + '">'

Would playing with absolute_without_cdn be too low-level and affect too many things?

The URL needs to be relative because:

  • A normal browser cannot access the .onion URL.
  • Cannot access the normal site over TOR because it is behind DDoS protection. And even if it worked, I don’t want to leak details to TOR exit nodes.
1 curtida

This would require some internal changes, I am somewhat sympathetic cause it makes life a bit easier when changing domain names for sites that do not use A CDN.

Would have to be something like, IF no CDN configured then cook a relative url.

3 curtidas

I assume you only need to set this up when the configuration is changed?

Imagine having

'<img src="' + Discourse.cdn_url_no_prefix + '/uploads/....jpg' + '">'

When there is no CDN configured then Discourse.cdn_url_no_prefix can simply be a empty string.

Does that mean that there is a chance you can implement this in the (near) future?

Just to add a voice and to agree with @sam, we’ve already had some switcheroos with our domains and relative URLs is most certainly needed.

Gostaria de me manifestar a favor de links internos relativos. Atualmente, utilizo URLs completas para referenciar, por exemplo, outro tópico no mesmo site.

De fato, nosso site mudou recentemente de domínio (ressaltando que o redirecionamento está ativo):

E nosso novo hospedeiro, Communiteq (antigo DiscourseHosting), gentilmente fez algum tipo de sed em nosso banco de dados para refletir essa mudança.

Talvez haja razões técnicas para o status atual? Talvez possamos usar algo como %{THIS}/t/000 no futuro? Como desenvolvedor, caminhos absolutos geralmente me deixam nervoso. Há também a questão da mudança de http: para https:, que também realizamos (ou pelo menos aplicamos com mais rigor) como parte da migração mencionada acima. Isso parece ser muito semelhante ao caso de uso de @mreach.

Como sempre, muitos agradecimentos à equipe do Discourse por um produto maravilhoso. R.

1 curtida

Geralmente, não é um grande problema executar uma busca e substituição direcionada em todos os posts afetados quando o domínio muda.

1 curtida