Back to top

Autore Topic: [RISOLTO] Errori 404 generati dal componente tag  (Letto 746 volte)

Offline gioso

  • Appassionato
  • ***
  • Post: 279
  • Sesso: Maschio
    • Mostra profilo
[RISOLTO] Errori 404 generati dal componente tag
« il: 06 Feb 2023, 15:58:39 »
Salve a tutti.
Dopo cinque anni di digiuno da Joomla, dopo diversi tentativi di migrazione verso le versioni successive (tutti miseramente falliti...) ho deciso di riprendere il mio vecchio sito (in Joomla 2.5.28) e di aggiornarlo all'ultima versione. Da un mese circa ho finalmente completato la migrazione a Joomla 4.2.6 (ora Joomla 4.2.7). Una volta messo online, ho curato tutti i redirect dal vecchio al nuovo sito (un lavoraccio in sé, complicato dal fatto che ho riorganizzato l'intera URL e diverse categorie).
Ciò premesso, tra i tanti redirect ho dovuto gestire problemi generati dallo stesso Joomla. Mi riferisco soprattutto agli errori derivanti dal componente tag. Ho sperimentato almeno tre categorie di errori.
1) Numerosi indirizzi con errore 404 si presentano nella forma /component/tags/parola.html invece di /component/tags/tag/parola.html
2) Altrettanti sono nella forma /component/tags/parola.html?itemid=101
3) Come conseguenza del secondo errore vengono generati i percorsi /component/tags/parola.html?itemid=101&start=20 (con i suoi multipli) [dove 20 è il numero di elementi impostati nelle opzioni dei contenuti e/o dei tag da visualizzare per ogni pagina].
Per il momento ho risolto ogni errore mediante i reindirizzamenti: nel primo caso ho aggiunto /tag/ dove mancava; nel secondo e nel terzo caso ho rimosso ?itemid=101.
Non escludo di aver potuto settare male qualche impostazione, ma una rapida occhiata ai file mi fa concludere che il problema sia generato dal contenuto della cartella components/com_tags/tmpl/  .
Non avendo molta dimestichezza con il linguaggio html e php, evito di mettere mani dove non so, ma sarei disposto a provarci (anche in locale, per evitare problemi). Accolgo ogni tipo di suggerimento e sollecitazione per la soluzione definitiva di questo problema piuttosto scomodo.
« Ultima modifica: 12 Apr 2023, 20:04:51 da tomtomeight »

Offline gioso

  • Appassionato
  • ***
  • Post: 279
  • Sesso: Maschio
    • Mostra profilo
Re:Errori 404 generati dal componente tag
« Risposta #1 il: 12 Apr 2023, 08:17:17 »
Premessa
Ho trascorso una buona parte degli ultimi tre mesi nel tentativo di risolvere il problema proposto anche in questo forum. Mi sembra utile condividere la soluzione più semplice finora individuata. Essa si applica a Joomla! 4.2, in particolare alle versioni dalla 4.2.6 in poi. Non ho esperienza sulle versioni precedenti, in quanto ho migrato il mio sito da Joomla 2.5.28 alla versione indicata, senza migrazioni intermedie.

Causa
Come intuivo già nel primo post, la causa degli errori sta nel componente tags. Presumo che tutto dipenda dal file router.php, presente nel percorso /components/com_tags/src/Service. In ultima istanza, è possibile un errore a monte nelle API di Joomla!.

Soluzione
Ho tentato diverse soluzioni: all’inizio ho reindirizzato ogni singolo errore 404, ma ho dovuto desistere sia per l’alto numero di errori registrati ogni giorno, sia perché da metà febbraio sono comparsi nuovi errori mai registrati prima a seguito dell’aggiornamento a Joomla! 4.2.8.

Per tagliare la testa al toro, ho lavorato in parallelo su htaccess. Inizialmente ho preferito generare una riga di redirect per ogni tag, per evitare problemi di SEF e di SEO. Nel frattempo ho provato a generare una sola riga per risolvere tutti i problemi:

Codice: [Seleziona]
RewriteRule ^component/tags/(.*).html /component/tags/tag/$1.html [R=301,L]
Questa riga genera un loop con errore ERR_TOO_MANY_REDIRECTS, senza alcuna soluzione.
Sono giunto, finalmente, a una soluzione stabile e complessivamente economica riducendo a una riga di redirect per ogni lettera dell’alfabeto (si veda nel codice dopo il commento ## 1). La lettera “t”, soggetta a loop, ha richiesto accorgimenti specifici: una singola riga per ogni parola che inizia con “ta” (si veda nel codice dopo il commento ## 3); alcune righe per i casi in cui la lettera “t” è seguita da vocale o consonante (si veda nel codice dopo il commento ## 2). Ecco il codice:

Codice: [Seleziona]
## 1/ Per lettera e cifra (“t” esclusa)
RewriteRule ^component/tags/a(.*).html /component/tags/tag/a$1.html [R=301,L]
RewriteRule ^component/tags/b(.*).html /component/tags/tag/b$1.html [R=301,L]
RewriteRule ^component/tags/c(.*).html /component/tags/tag/c$1.html [R=301,L]
RewriteRule ^component/tags/d(.*).html /component/tags/tag/d$1.html [R=301,L]
RewriteRule ^component/tags/e(.*).html /component/tags/tag/e$1.html [R=301,L]
RewriteRule ^component/tags/f(.*).html /component/tags/tag/f$1.html [R=301,L]
RewriteRule ^component/tags/g(.*).html /component/tags/tag/g$1.html [R=301,L]
RewriteRule ^component/tags/h(.*).html /component/tags/tag/h$1.html [R=301,L]
RewriteRule ^component/tags/i(.*).html /component/tags/tag/i$1.html [R=301,L]
RewriteRule ^component/tags/j(.*).html /component/tags/tag/j$1.html [R=301,L]
RewriteRule ^component/tags/k(.*).html /component/tags/tag/k$1.html [R=301,L]
RewriteRule ^component/tags/l(.*).html /component/tags/tag/l$1.html [R=301,L]
RewriteRule ^component/tags/m(.*).html /component/tags/tag/m$1.html [R=301,L]
RewriteRule ^component/tags/n(.*).html /component/tags/tag/n$1.html [R=301,L]
RewriteRule ^component/tags/o(.*).html /component/tags/tag/o$1.html [R=301,L]
RewriteRule ^component/tags/p(.*).html /component/tags/tag/p$1.html [R=301,L]
RewriteRule ^component/tags/q(.*).html /component/tags/tag/q$1.html [R=301,L]
RewriteRule ^component/tags/r(.*).html /component/tags/tag/r$1.html [R=301,L]
RewriteRule ^component/tags/s(.*).html /component/tags/tag/s$1.html [R=301,L]
RewriteRule ^component/tags/u(.*).html /component/tags/tag/u$1.html [R=301,L]
RewriteRule ^component/tags/v(.*).html /component/tags/tag/v$1.html [R=301,L]
RewriteRule ^component/tags/w(.*).html /component/tags/tag/w$1.html [R=301,L]
RewriteRule ^component/tags/x(.*).html /component/tags/tag/x$1.html [R=301,L]
RewriteRule ^component/tags/y(.*).html /component/tags/tag/y$1.html [R=301,L]
RewriteRule ^component/tags/z(.*).html /component/tags/tag/z$1.html [R=301,L]
RewriteRule ^component/tags/([0-9])(.*).html /component/tags/tag/$1$2.html [R=301,L]

## 2/ Lettera t con iniziale diversa da ta-
RewriteRule ^component/tags/te(.*).html /component/tags/tag/te$1.html [R=301,L]
RewriteRule ^component/tags/th(.*).html /component/tags/tag/th$1.html [R=301,L]
RewriteRule ^component/tags/ti(.*).html /component/tags/tag/ti$1.html [R=301,L]
RewriteRule ^component/tags/to(.*).html /component/tags/tag/to$1.html [R=301,L]
RewriteRule ^component/tags/tr(.*).html /component/tags/tag/tr$1.html [R=301,L]
RewriteRule ^component/tags/tu(.*).html /component/tags/tag/tu$1.html [R=301,L]
## AGGIUNGERE ALTRE VARIABILI SE NECESSARIE

## 3/ Lettera t con iniziale ta-
RewriteRule ^component/tags/tabella.html /component/tags/tag/tabella.html [R=301,L]
## AGGIUNGERE OGNI SINGOLO TAG INIZIANTE CON TA-, COME NELL'ESEMPIO PRECEDENTE

Questa soluzione ha il pregio di risolvere definitivamente tutti gli errori 404 di ogni singolo tag, in quanto raccoglie gli indirizzi con e senza query string, con e senza paginazione. Vengono correttamente reindirizzate tutte le seguenti query:
?itemid=101, così oppure seguita da &start=([0-9]+)
?Itemid=101, così oppure seguita da &start=([0-9]+)
?/itemid=101, così oppure seguita da &start=([0-9]+)
Con il prossimo aggiornamento a Joomla! 4.3 sono stati annunciati cambiamenti nel componente tag. Spero che siano intervenuti anche sul router. Vi terrò aggiornati!
Aggiungo “RISOLTO temporaneamente” per i motivi indicati.




EDIT: Per rendere meglio l'idea, le poche righe di codice in htaccess sostituiscono migliaia di redirect generati nel mio sito, in quanto faccio uso massivo dei tag (più di 400).
« Ultima modifica: 12 Apr 2023, 20:39:32 da gioso »

Offline mariarosaria

  • Appassionato
  • ***
  • Post: 514
  • Sesso: Femmina
  • Comincio a capire...
    • Mostra profilo
Re:Errori 404 generati dal componente tag
« Risposta #2 il: 12 Apr 2023, 11:06:28 »
Beh, complimenti.
Magari a questo punto potresti mettere 'RISOLTO' al primo post.
E magari, se possibile, un bel link al sito così ci facciamo un giro

Offline gioso

  • Appassionato
  • ***
  • Post: 279
  • Sesso: Maschio
    • Mostra profilo
Re:Errori 404 generati dal componente tag
« Risposta #3 il: 12 Apr 2023, 16:50:23 »
Beh, complimenti.
Magari a questo punto potresti mettere 'RISOLTO' al primo post.
E magari, se possibile, un bel link al sito così ci facciamo un giro


Mi ero proposto di aggiungere [RISOLTO temporaneamente], come ho indicato nel post. C'è un problema: il primo post non è più modificabile, quindi per il momento non posso operare.
Forse c'è un limite di tempo entro cui poter modificare un messaggio?

Offline gioso

  • Appassionato
  • ***
  • Post: 279
  • Sesso: Maschio
    • Mostra profilo
Re:Errori 404 generati dal componente tag
« Risposta #4 il: 12 Apr 2023, 20:36:25 »

C'è un problema: il primo post non è più modificabile, quindi per il momento non posso operare.


Problema risolto dai moderatori. Grazie!
« Ultima modifica: 22 Apr 2023, 17:07:15 da gioso »

Offline gioso

  • Appassionato
  • ***
  • Post: 279
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] Errori 404 generati dal componente tag
« Risposta #5 il: 19 Apr 2023, 13:49:58 »
Da una prima analisi dell'aggiornamento di Joomla! 4.3, pubblicato ieri, confermo che è stato definitivamente risolto il problema legato al router di generazione dei link ai tag. Confermo, pertanto, che il codice di correzione si applica a Joomla 4.2 ma non a Joomla 4.3.
Mi sento di consigliare quanto segue.
  • Se si crea un nuovo sito a partire da Joomla 4.3, non è necessario utilizzare il codice postato nei messaggi precedenti.
  • Se si aggiorna un sito da Joomla 4.2 a 4.3, è preferibile lasciare il codice in htaccess, per evitare errori 404 qualora motori di ricerca o siti esterni abbiano già memorizzato link errati in ingresso sul proprio sito. Il tempo di conservazione dei redirect in htaccess varia in base a una serie di fattori la cui analisi esula da questa discussione.

 



Web Design Bolzano Kreatif