Relative URLs für hochgeladene Bilder benötigt

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 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

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.

Ich möchte mich gerne für relative interne Links aussprechen. Derzeit verwende ich vollständige URLs, um beispielsweise auf ein anderes Thema auf derselben Website zu verweisen.

Unsere Website hat kürzlich die Domain gewechselt (wobei eine Weiterleitung derzeit aktiv ist):

Und unser neuer Host, Communiteq (ehemals DiscourseHosting), hat unsere Datenbank auf irgendeine Weise sedded, um diese Änderung widerzuspiegeln.

Gibt es vielleicht technische Gründe für den aktuellen Status? Könnten wir in Zukunft etwas wie %{THIS}/t/000 verwenden? Als Entwickler machen mich absolute Pfade normalerweise nervös. Es stellt sich auch die Frage des Wechsels von http: zu https:, den wir im Rahmen der oben genannten Migration ebenfalls durchgeführt haben (oder zumindest strenger durchgesetzt haben). Dies scheint ein sehr ähnlicher Anwendungsfall wie bei @mreach zu sein.

Wie immer vielen Dank an das Discourse-Team für ein wunderbares Produkt. R.

1 „Gefällt mir“

Es ist normalerweise kein großes Problem, bei einem Domänenwechsel eine gezielte Suchen-und-Ersetzen-Operation auf allen betroffenen Beiträgen durchzuführen.

1 „Gefällt mir“