Argomento con giapponese nell'URL non reindirizza se l'URL non corrisponde perfettamente

In community.wanikani.com, l’apertura di qualsiasi link a discussioni con caratteri giapponesi nell’URL completo ha smesso di funzionare quando si aprono in una nuova scheda o quando si copia e incolla direttamente il link. Cliccare sul link per navigare nella stessa scheda funziona ancora.

Ad esempio, aprire questo link in una nuova scheda dovrebbe reindirizzare a

キノの旅 Home Thread (Intermediate Book Club) - Book Clubs - WaniKani Community

Ma invece tenta di reindirizzare a

キノの旅 Home Thread (Intermediate Book Club) - Book Clubs - WaniKani Community

che non riesce a caricarsi.

Se il link corrisponde esattamente, funziona correttamente. Ma ovviamente, con i rinominamenti delle discussioni, questo spesso non è il caso.

Ho anche provato a riprodurre il problema su try.discourse.org, ma in quella installazione i caratteri giapponesi non vengono mai aggiunti all’URL, anche se inclusi nel titolo della discussione. Non sono sicuro del motivo, ma senza che ciò accada non posso dimostrare il bug lì.

2 Mi Piace

Entrambi sono collegamenti al argomento 34890. Per me funzionano correttamente su Firefox. Qual è il problema?

3 Mi Piace

sospiro Sembra che possa essere un altro bug di Chrome. Funziona perfettamente per me sia su Firefox che su Edge. Stranamente, funziona la prima volta in una finestra di navigazione in incognito, ma poi fallisce la seconda volta. Lo stesso accade dopo aver cancellato la cache e i cookie del sito e riavviato il computer.

Chrome segnala l’errore: troppe reindirizzamenti.


Potresti controllare su Chrome per confermare se si tratta di un problema generale e non solo mio? Assicurati solo di provare ad aprire la pagina più volte, dato che la prima sembra funzionare correttamente. Apprezzo molto il tuo aiuto!

3 Mi Piace

Posso riprodotlo su Chrome mobile. :bug:

5 Mi Piace

Grazie. Immagino che lo segnalerò a Google.

1 Mi Piace

Dal mio telefono Android, su Chrome, il secondo link reindirizza all’infinito.

1 Mi Piace

Ancora con Chrome? Voglio solo essere sicuro prima di segnalarlo a loro. Immagino che su Discourse non sia cambiato nulla al riguardo di recente? (Comunque, questo sarebbe probabilmente ancora un problema di Chrome, dato che succede solo lì, anche se qualcosa fosse cambiato su Discourse.)

3 Mi Piace

Aspetta un attimo, potrebbe essere Discourse. Anche un bug del service worker.

5 Mi Piace

Ok, grazie per l’aggiornamento.

1 Mi Piace

Ci sono aggiornamenti a riguardo?

Ci vorrà un po’ di tempo per risolvere la questione; è già stata assegnata, quindi non rimarrà senza seguito.

7 Mi Piace

Non mi aspetto di trovare alcuna soluzione o workaround. Dobbiamo solo aspettare che venga risolto.

Stai ancora riscontrando questo problema? Sembra che sia stato risolto, a meno che non stia facendo qualcosa di diverso stavolta.

1 Mi Piace

In realtà, no. È ricominciato oggi. Non ho idea di come sia stato risolto per un po’.


Dato che potrebbe volerci del tempo, sarei aperto a soluzioni alternative per ora. Ho menzionato nell’OP che su try (e ho controllato anche qui su meta) i caratteri giapponesi non vengono mai aggiunti all’URL, aggirando di fatto il problema. È una impostazione del sito o della categoria di cui potrei parlare con il mio amministratore del sito? Hai altri suggerimenti per una soluzione alternativa oltre a quella?

Quando inserisco un URL con un titolo in arabo nel browser, ad esempio:

https://forums.coretabs.net/t/2456

vengo reindirizzato in un loop infinito (e il link generato non è corretto; credo sia legato alla codifica).

Dovrebbe invece reindirizzare a:

https://forums.coretabs.net/t/ماذا-يجب-ان-نتعلم-في-javascript-؟/2456

Perché non condivido i link con i loro titoli?

A causa del scarso supporto dell’arabo su Twitter e Facebook:

  • Questo bug non esisteva prima degli ultimi aggiornamenti (l’ultima volta che ho provato a condividere un link è stata circa due settimane fa, e funzionava perfettamente).
3 Mi Piace

Ho analizzato il nostro codice e sembra che l’errore sia piuttosto semplice, ma vorrei verificare le mie ipotesi.

Abbiamo una configurazione del sito chiamata slug_generation_method che deve essere modificata dal valore predefinito ascii a encoded per attivare questo bug. Quando si modifica questa configurazione, cancelliamo tutti gli slug e li rigeneriamo.

Quello che non capisco è perché, quando la configurazione del sito è impostata su “encoded”, generiamo uno slug in questo modo:

[3] pry(main)> SiteSetting.slug_generation_method
=> "encoded"
[4] pry(main)> Slug.for(t.slug)
=> "キノの旅-home-thread-intermediate-book-club"

mentre mi aspettavo che “encoded” significasse qualcosa come

[5] pry(main)> CGI.escape(Slug.for(t.slug))
=> "%E3%82%AD%E3%83%8E%E3%81%AE%E6%97%85-home-thread-intermediate-book-club"

Questo sembra provenire da

Lo slug grezzo dalla tabella viene restituito nell’intestazione Location della risposta 301 quando lo slug di un argomento non corrisponde e, a mio avviso, dovremmo restituire un URL valido.

9 Mi Piace

Sì, dovremmo ripulire il metodo di generazione degli slug per ‘encoded’ in modo che dipenda meno dai meccanismi automatici del browser.

8 Mi Piace

Stai dicendo che l’URL stesso mostrerebbe la versione codificata? O semplicemente che il reindirizzamento la gestirebbe internamente utilizzando la versione codificata? In ogni caso, sarebbe fantastico far sì che funzioni “senza problemi” senza dipendere da comportamenti specifici del browser.

1 Mi Piace

Ciao,

Questo caso è stato risolto?
Poiché sto ancora riscontrando questo problema, come ho segnalato nel argomento che ho avviato in merito.

1 Mi Piace

No, come indicato dal topic aperto nella categoria bug qui :sweat_smile:

@sam Ho dato un’occhiata a questo di nuovo oggi e ci sono due strade da seguire:

  1. Memorizzare uno slug encoded effettivo nella colonna slug quando l’impostazione di generazione degli slug è impostata su encoded. Eseguire una migrazione per cancellare tutti gli slug attuali quando si usano slug encoded, in modo che vengano rigenerati correttamente nel tempo.

  2. Mantenere lo slug UTF-8 corrente e correggerlo al volo quando viene inviato in un header per il reindirizzamento 301.

A mio parere, l’opzione 1 è “più corretta” e renderà più difficile passare lo slug raw a un client. Tuttavia, correggere solo il generatore di slug non è stato sufficiente, poiché i browser ricevono un URL encoded nel reindirizzamento 301 ma lo decodificano per la prossima richiesta, causando il fallimento del nostro confronto degli slug e un nuovo reindirizzamento. Questo significa che dovrò correggere anche il metodo di confronto degli slug nel controller dei topic e forse in altri punti.

Dovrei continuare su questa strada?

6 Mi Piace