Il pulsante "Mostra post completo" non funziona nelle installazioni in sottocartella

Lo fa :slight_smile:

Sei in grado di accedere all’istanza su cui è in esecuzione? In tal caso, potresti eseguire quanto segue e dirmi il risultato:

./launcher enter app
rails c
TopicEmbed.find_by(topic_id: 157441).as_json
discourse(prod)> TopicEmbed.find_by(topic_id: 157441).as_json
Serializzare modelli ActiveRecord (TopicEmbed) senza specificare i campi non è consentito. Usa uno Serializer o passa l'opzione :only a #serializable_hash. Maggiori informazioni: ``https://meta.discourse.org/t/-/314495
=>
{“id”=>56685,
“topic_id”=>157441,
“post_id”=>483289,
“embed_url”=>
“``https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”``,
“content_sha1”=>nil,
“created_at”=>“2025-12-08T17:54:07.585Z”,
“updated_at”=>“2025-12-09T18:04:33.539Z”,
“deleted_at”=>nil,
“deleted_by_id”=>nil,
“embed_content_cache”=>“”}
discourse(prod)>

Hai modificato l’output prima di condividerlo? Guardando solo il valore di embed_url, è

“``https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”``

Potresti eseguire di nuovo lo stesso comando, ma questa volta:

./launcher enter app
rails c
TopicEmbed.find_by(topic_id: 157441).embed_url

Se ciò che hai condiviso è effettivamente il valore di embed_url nel tuo database, allora quello è il problema, e creerò una piccola PR in discourse/discourse per gestire casi limite come questo in cui l’embed_url è finito in uno stato malformato.

Nop! L’ho appena copiato e incollato qui.

discourse(prod) > TopicEmbed.find_by(topic_id: 157441).embed_url
=> “https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”
discourse(prod) >

Qui puoi vedere un argomento creato utilizzando Embed JS:

https://tecnoblog.net/comunidade/t/microsoft-edge-ganha-copilot-mode-que-promete-realizar-tarefas-usando-ia-tecnoblog/157661
Anche il “Mostra post completo” non funziona in questo argomento.

1 Mi Piace

Quindi l’intero problema qui è perché la PR sopra ha iniziato a rimuovere le barre finali da TopicEmbed a gennaio di quest’anno? Mi sento combattuto riguardo a questa modifica. Onestamente preferirei che rispettassimo ciò che l’amministratore ci invia.

Penso che questa sia la radice dei nostri problemi.

Puoi per favore eseguire quanto segue @Thiago_Mobilon

url = "https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento"

fd = FinalDestination.new(url, validate_uri: true, max_redirects: 5, follow_canonical: true)

uri = fd.resolve

puts uri

html = FinalDestination::HTTP.get(uri)

puts html.truncate(200)

Il fd.resolve dovrebbe essere in grado di aggiungere la barra finale sulla riga puts uri. Temo che stia fallendo.

1 Mi Piace
discourse(prod)> url = "https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento"
discourse(prod)> 
discourse(prod)> fd = FinalDestination.new(url, validate_uri: true, max_redirects: 5, follow_canonical: true)
discourse(prod)> 
discourse(prod)> uri = fd.resolve
discourse(prod)> 
discourse(prod)> puts uri
discourse(prod)> 
discourse(prod)> html = FinalDestination::HTTP.get(uri)
discourse(prod)> 
discourse(prod)> puts html.truncate(200)
https://tecnoblog.net/noticias/governo-renova-app-da-cnh-para-baratear-obtencao-do-documento

=> nil
1 Mi Piace

In effetti non sta seguendo i reindirizzamenti. Il forum è in esecuzione sullo stesso server/spazio IP del blog? Potrebbe attivare la nostra protezione SSRF.

In tal caso, è necessario consentirlo tramite l’impostazione allowed_internal_hosts

2 Mi Piace

Nota che

Il motivo per cui abbiamo apportato questa modifica è che c’era un’incoerenza tra il modo in cui funzionavano gli embed di WP Discourse e gli embed javascript. Gli embed javascript hanno sempre normalizzato l’URL. Gli embed di WP Discourse arrivavano tramite un percorso diverso e non stavano normalizzando l’URL (fino a quando non abbiamo apportato la modifica). Ciò ha portato ad altre incoerenze.

2 Mi Piace

Intendi così? (Era già così)

No, è su un VPS dedicato. La macchina del blog sta inoltrando il traffico (nginx) della sottodirectory al VPS di Discourse.

Un altro problema è che, quando eseguo un curl verso l’API, cercando l’ID del topic di un URL di incorporamento (embed URL), non riesco a trovarlo a causa della barra finale (trailing slash). Discourse restituisce una pagina 404.

Ma se rimuovo la barra finale, restituisce il valore:

mobilon@Thiagos-MacBook-Pro ~ % curl 'https://tecnoblog.net/comunidade/embed/info?embed_url=https://tecnoblog.net/noticias/anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina/' -H 'API-KEY: <API KEY>' -H 'API-USERNAME: <USERNAME>'

<!DOCTYPE html>

<html lang="pt-BR">

<head>

  <meta charset="utf-8">

  <title>Pagina non trovata - Tecnoblog Comunità</title>
mobilon@Thiagos-MacBook-Pro ~ % curl 'https://tecnoblog.net/comunidade/embed/info?embed_url=https://tecnoblog.net/noticias/anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina' -H 'API-KEY: <API KEY>' -H 'API-USERNAME: <USERNAME>' 

{"topic_id":157645,"post_id":484103,"topic_slug":"anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina-tecnoblog","comment_count":15}%     

Per farlo funzionare, dovrei eseguire una sostituzione di stringa (str replace) in WordPress, per rimuovere la barra finale dal permalink, prima di effettuare la verifica. Ma questo non ha senso, l’URL canonico ha la barra finale…

In pratica, Discourse sta normalizzando il permalink a un URL che non esiste… la versione normalizzata dovrebbe essere quella con la barra finale.

1 Mi Piace

Grazie a @Thiago_Mobilon ho trovato il problema e ho una correzione proposta

2 Mi Piace

@Thiago_Mobilon la correzione è stata implementata, puoi aggiornare per favore?

1 Mi Piace

Funziona, grazie Falco!

Ma sono ancora preoccupato per gli URL senza la barra finale, per le ragioni menzionate nel mio post precedente. Devo aprire un nuovo argomento a riguardo @angus?

Grazie, sono contento di sentirlo.

Certo! Non influenzerà la funzione “Full Post” poiché ora possiamo seguire i reindirizzamenti nei siti sullo stesso dominio del forum, ma puoi continuare in un nuovo argomento per altre preoccupazioni.

3 Mi Piace