El botón "Show Full Post" no funciona en instalaciones de subcarpetas

Sí puede :slight_smile:

¿Puedes acceder a la instancia donde se está ejecutando esto? Si es así, ¿podrías ejecutar lo siguiente e indicarme el resultado?:

./launcher enter app
rails c
TopicEmbed.find_by(topic_id: 157441).as_json
discourse(prod)> TopicEmbed.find_by(topic_id: 157441).as_json
Serializar modelos de ActiveRecord (TopicEmbed) sin especificar campos no está permitido. Usa un Serializer, o pasa la opción :only a #serializable_hash. Más información: ``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)>

¿Editaste la salida antes de compartirla? Solo mirando el valor de embed_url es

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

¿Podrías ejecutar el mismo comando de nuevo, pero esta vez:

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

Si lo que compartiste es de hecho el valor de embed_url en tu base de datos, entonces ese es el problema, y haré un pequeño PR a discourse/discourse para manejar casos extremos como este donde el embed_url ha terminado en un estado mal formado.

¡No! Simplemente lo copié y pegué aquí.

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) >

Aquí puedes ver un tema que se creó usando Embed JS:

https://tecnoblog.net/comunidade/t/microsoft-edge-ganha-copilot-mode-que-promete-realizar-tarefas-usando-ia-tecnoblog/157661
Tampoco funciona el “Mostrar publicación completa” en este tema.

1 me gusta

¿Así que todo el problema aquí es porque la PR anterior comenzó a eliminar las barras inclinadas finales de TopicEmbed en enero de este año? Me siento en conflicto con este cambio. Preferiría que respetáramos lo que el administrador nos envía, para ser honesto.

Creo que esta es la raíz de nuestros problemas.

¿Puedes ejecutar lo siguiente, @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)

El fd.resolve debería poder agregar la barra inclinada final en la línea puts uri. Me temo que está fallando.

1 me gusta
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 me gusta

Efectivamente, no está siguiendo las redirecciones. ¿El foro se ejecuta en el mismo servidor/espacio de IP que el blog? Podría estar activando nuestra protección SSRF.

Si ese es el caso, necesita permitirlo configurando allowed_internal_hosts.

2 Me gusta

Tenga en cuenta que

La razón por la que hicimos ese cambio es porque había una inconsistencia entre cómo funcionaban las incrustaciones de WP Discourse y las incrustaciones de javascript. Las incrustaciones de javascript siempre normalizaron la URL. Las incrustaciones de WP Discourse llegaron a través de una ruta diferente y no estaban normalizando la URL (hasta que hicimos el cambio). Eso provocó algunas otras inconsistencias.

2 Me gusta

¿Quieres decir algo así? (Ya estaba así)

No, está en un VPS dedicado. La máquina del blog está reenviando el tráfico (nginx) del subdirectorio al VPS de Discourse.

Otro problema es que, cuando ejecuto un curl a la API, buscando el ID del tema de una URL de inserción (embed URL), no puedo encontrarlo debido a la barra inclinada final (trailing slash). Discourse devuelve una página 404.

Pero si elimino la barra inclinada final, devuelve el valor:

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>Página no encontrada - Tecnoblog Comunidade</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}%     

Para que funcione, necesitaría hacer un reemplazo de cadena (str replace) en WordPress, para eliminar la barra inclinada final del permalink, antes de verificar. Pero esto no tiene sentido, la URL canónica tiene la barra inclinada final…

En la práctica, Discourse está normalizando el permalink a una URL que no existe… la versión normalizada debería ser la que tiene una barra inclinada final.

1 me gusta

Gracias a @Thiago_Mobilon he encontrado el problema y tengo una solución propuesta

2 Me gusta

@Thiago_Mobilon la corrección está implementada, ¿puedes actualizar, por favor?

1 me gusta

¡Funciona, gracias Falco!

Pero todavía me preocupan las URL sin la barra final, por las razones mencionadas en mi publicación anterior. ¿Debería abrir un nuevo tema sobre esto @angus?

Gracias, me alegra oír eso.

¡Claro! No afectará a la función “Publicación Completa”, ya que ahora podemos seguir las redirecciones en sitios del mismo dominio que el foro, pero puedes continuar en un nuevo tema para otras preocupaciones.

3 Me gusta