アップロードされた画像の相対 URL を Discourse で生成するにはどうすればよいですか?
当サイトは HTTPS と TOR の .onion の両方でアクセス可能ですが、どちらの環境でも画像が表示されるようにする必要があります。
Discourse を設定して、upload:// の URL を <img> タグ内の相対 URL に変換するにはどうすればよいですか?この URL 生成はどのソースファイルで行われていますか?
アップロードされた画像の相対 URL を Discourse で生成するにはどうすればよいですか?
当サイトは HTTPS と TOR の .onion の両方でアクセス可能ですが、どちらの環境でも画像が表示されるようにする必要があります。
Discourse を設定して、upload:// の URL を <img> タグ内の相対 URL に変換するにはどうすればよいですか?この URL 生成はどのソースファイルで行われていますか?
相対的な画像 URL はサポートされている設定ではないと思います。また、その変更は非常に難しいかもしれません cc @sam
念のため確認ですが:
HTTPS ドメインと TOR の隠しサービス .onion の両方からアップロードは正常に動作しますが、投稿に対して生成される実際の HTML ではフル URL が使用されており、これが問題となっています。
おそらく、どこかに以下のような処理を行うコードがあるはずです。
'<img src="' + Discourse.base_url_no_prefix + '/uploads/....jpg' + '" >'
これを以下のように生成する必要があるのです。
'<img src="' + '/uploads/....jpg' + '" >'
absolute_without_cdn を操作するのは低レベルすぎて、影響範囲が広すぎるでしょうか?
URL を相対パスにする必要がある理由は以下の通りです:
これにはいくつかの内部変更が必要になります。CDN を使用していないサイトのドメイン名を変更する際に、少し生活が楽になるため、ある程度共感できます。
CDN が設定されていない場合、相対 URL を生成する、といった仕組みにする必要があります。
設定が変更された場合のみ、この設定を行う必要があると推測されます。
例えば、
'<img src="' + Discourse.cdn_url_no_prefix + '/uploads/....jpg' + '">'
というコードがあるとします。CDN が設定されていない場合、Discourse.cdn_url_no_prefix は単に空文字列で問題ありません。
つまり、(近い) 将来にこれを実装する可能性があるということでしょうか?
一言付け加えて、@sam の意見に賛成ですが、ドメインの入れ替えはこれまでに何度かありましたので、相対 URL の使用は間違いなく必要です。
相対的な内部リンクに賛成の声を上げさせてください。現在、同じサイト内の他のトピックを参照する際に、完全な URL を使用しています。
実際、当サイトは最近ドメインを変更しました(現在リダイレクトが有効になっています)。
新しいホストである Communiteq(旧 DiscourseHosting)は、この変更を反映させるために、なんとデータベースを sed で処理してくれました。
現在の状態には技術的な理由があるのでしょうか?将来的には %{THIS}/t/000 のような形式を使用することは可能でしょうか?開発者として、絶対パスにはいつも不安を感じます。また、上記の移行の一環として http: から https: への切り替え(少なくともより厳格な強制)を行った点も同様のケースと言えます。これは @mreach さんのケースと非常に似ています。
いつも素晴らしい製品を提供してくださる Discourse チームに心から感謝しています。R.
ドメインが変更された際、影響を受けるすべての投稿を対象にターゲット検索・置換を実行することは、通常、大きな問題にはなりません。