- Home
- Categorie
- Coding e Sistemistica
- Joomla!
- joomla url duplicati e contenuti duplicati cosa consigliate
-
Ciao
ti rigrazio per la rapida risposta
probabilmente ho capito a cosa è dovuto
al pagination del template
poichè ciò si verifica solo nella pagina articolo
in pratica quei parametri vanno ad influire su quanti e quali articoli correlati all'articolo corrente prelevare
per il momento ho inserito nel file robots.txt la seguente istruzione
Disallow: /*?
-
In questo modo blocchi l'accesso a tutti gli url con parametri, cioè quelli del tipo: tuodominio.estensione/qualunquecosa?qualunquecosa
Non è detto che un tale url non debba essere indicizzato.
Io non toccherei il robots e lavorerei invece sul codice per inserire un noindex dove serve, cosa che puoi fare via estensione da installare, con un tuo plugin o addirittura - in maniera poco elegante - via php.
-
quale estensione consiglieresti
o se è possible farlo tramite plug in (come si potrebbe fare)
in pratica quelle url sono dovute ai releated articles
diciamo che vorrei vitare di installre nuove estensione se non streettamente neccessario
o tramite php (intendi mdoficare il fiel router.php)
-
Ciao p_il_musicante,
ti consiglio di leggere queste discussioni (ma sul forum ne trovi altre dello stesso tenore):
http://www.giorgiotave.it/forum/joomla/216299-risolto-problema-paginazione-blog-joomla.html
http://www.giorgiotave.it/forum/title-description-e-struttura/216762-pagination-rel-next-e-rel-prev-e-canonical-tag-ce-conflitto.htmlPer quanto riguarda la paginazione, verifica che Joomla usi il rel prev e next correttamente e se puoi indirizza il canonical verso la "prima pagina", cioè quella senza la query string ?limit... .
Al momento non ricordo se le ultime release di Joomla facciano il tutto senza bisogno di altre estensioni, né quali estensioni si comportino bene. Prendo nota e ti faccio sapere (grazie del suggerimento, controllo i miei siti se dopo l'aggiornamento sono a posto senza modifiche "a mano").
-
Grazie per l'ottimo suggerimento
secondo me la cosa migliore e pendere il canonical del link della pagina articolo senza i parametri
tipo qualccsoa del genere
$pag_1 = explode ("?start",$currenturl); $pag_2 = explode ("?limit",$currenturl);
che ne pensi si può realizzare?
poichè a me è solo per la pagina articolo si vrifica questo fenomeno
-
Verifica dove inserisci questo codice perché deve sostituire l'attuale rel canonical (ce ne deve essere soltanto uno) e potresti dovere fare una regex oppure un'interrogazione a db per stabilire quando applicare quest'istruzione.
Nota che ottieni un vettore del quale devi prendere soltanto il primo elemento, cioè $pag_1[0] oppure $pag_2[0].
Comunque esistono altre funzioni php per tagliare la query string, cerca su php.net. Attento alle funzioni che individuano le regex, rallentano di molto il sistema.
-
ti ringrazio
tu hai qualche suggerimento su come implementare questa funzionalità?
io lo metterei nel file default.php del com_content del template
-
che ne dici del codice di seguito
$doc_data = $document->getHeadData(); $url = JURI::root(); $sch = parse_url($url, PHP_URL_SCHEME); $server = parse_url($url, PHP_URL_HOST); $canonical = $this->escape($_SERVER['REQUEST_URI']); $str_start = strpos($canonical, '?start'); if($str_start!==FALSE) { $canonical = substr($canonical,0,$str_start); } $str_limit = strpos($canonical, '?limit'); if($str_limit!==FALSE) { $canonical = substr($canonical,0,$str_limit); } $newtag = '<link rel="canonical" href="'.$sch.'://'.$server.$canonical.'"/>' ; $replaced = false; foreach ($doc_data['custom'] as $key=>$c) { if (strpos($c, 'rel="canonical"')!==FALSE) { $doc_data['custom'][$key] = $newtag; $replaced = true; } } if (!$replaced) { $doc_data['custom'][] = $newtag; } $document->setHeadData($doc_data);
-
Ciao,
lo dovrei provare. Codice a parte, però, assicurati che non vada in conflitto con l'html generato da Joomla e da altre estensioni come il sef plugin.io lo metterei nel file default.php del com_content del template
La cosa migliore è fare un plugin che ti faccia stampare l'html soltanto nelle pagine dove serve. Per la paginazione, ad esempio, abbiamo codice:- nel singolo articolo se o stesso si dispone su più pagine
- nelle categorie per la paginazione degli articoli su più pagine (ne vengono mostrati un numero fisso per pagina)
- nei vari componenti che gestiscono portfolio, contatti, ... se gli elementi si dispongono su più pagine
Nulla vieta di inserire il codice php in un "file generico" a patto che il codice stampi l'html solo quando serve e, come già detto, che non vi siano altre estensioni e il core di Joomla a stampare codice dello stesso tipo (es. in modo da non avere due canonical).
-
Grazie per il sempre pronto intervento
un plugin sarebbe l'ideale così sarebbe disponibile per tutti
io non ho molta esperienza utile a costruire un plug in
se sei daccordo potremmo provarci
o altrimeti testiamo il codice che ho postato sopra e lo miglioriamo
ti ringrazio
-
Di nulla.
-
ciao
hai testo il codice?
io l'ho provato ed inserisce il canonical giusto
ma non toglie quello già creato
una soluzione potrebbe essere la seguente
// toglie il tag canonical $doc = JFactory::getDocument(); foreach ( $doc->_links as $k => $array ) { if ( $array['relation'] == 'canonical' ) { unset($doc->_links[$k]); } } //inserisce il nuovo tag $document = JFactory::getDocument(); $doc_data = $document->getHeadData(); $url = JURI::root(); $sch = parse_url($url, PHP_URL_SCHEME); $server = parse_url($url, PHP_URL_HOST); $uri = JFactory::getURI(); $absolute_url = $uri->toString(); $canonical = $this->escape($_SERVER['REQUEST_URI']); //$canonical = $absolute_url; $str_start = strpos($canonical, '?start'); if($str_start!==FALSE) { $canonical = substr($canonical,0,$str_start); } $str_limit = strpos($canonical, '?limit'); if($str_limit!==FALSE) { $canonical = substr($canonical,0,$str_limit); } $newtag = '<link rel="canonical" href="'.$sch.'://'.$server.$canonical.'"/>' ; //$newtag = '<link rel="canonical" href="'.$canonical.'"/>' ; $replaced = false; foreach ($doc_data['custom'] as $key=>$c) { if (strpos($c, 'rel="canonical"')!==FALSE) { $doc_data['custom'][$key] = $newtag; $replaced = true; } } if (!$replaced) { $doc_data['custom'][] = $newtag; } $document->setHeadData($doc_data);
tu hai qualche altro suggerimento?
-
Ciao, non ancora, provo direttamente questo nuovo.
-
Ciao
sei iruscito a testarlo?
poichè io ho un dubbio sul fatto che effeettivamnte lo crei ogni volta il canonical
per il momentto ho inserio come workaround queste righe nel file robots
block the pagination
Disallow: /?limit=
Disallow: /?start=le vorrei togliere ma devo prima trovare una valida alternativa al problema dei meta tag duplicati
-
Ho testato un altro metodo forse più efficace
bisogna modificare il file /plugins/system/sef/sef.php
if ($uri !== $link) { **$pag_1 = explode ("?start",$uri); $pag_2 = explode ("?limit",$uri); if($uri !== $pag_1[0]) { $link = $pag_1[0]; } if($uri !== $pag_2[0]) { $link = $pag_2[0]; }** $doc->addHeadLink(htmlspecialchars($link), 'canonical'); }
inserie le righe di codice in grassetto
che ne pensi?
-
Ciao
hai testato?
chiedo anche agli altri utenti del forum
-
Ciao p_il_musicante,
intanto perdona i tempi biblici.
Rileggendo mi sono accorto di avere indicato la strada sbagliata in merito al rel=canonical con rel=next e rel=prev.La risposta si trova in questa pagina: support.google.com/webmasters/answer/1663744?hl=it
Si legge:[INDENT=2]rel="next" e rel="prev" sono concetti ortogonali a rel="canonical". Puoi inserire entrambe le dichiarazioni. Ad esempio, http:// www . example.com/article?story=abc&page=2&sessionid=123 può contenere:
<link rel="canonical" href="http: //www.example .com/article?story=abc&page=2"/><link rel="prev" href="http:// www . example.com/article?story=abc&page=1&sessionid=123" />
<link rel="next" href="http:// www . example.com/article?story=abc&page=3&sessionid=123" />[/INDENT]
Ricapitolando, in caso di paginazione:
-
vanno usati rel=next e rel=prev
-
il rel=canonical può essere usato in due modi:
-
può puntare a una pagina che include tutto (es. articolo diviso in più pagine con versione completa: in questo caso Google suggerisce di scegliere come canonica la versione integrale)
-
può puntare alla pagina stessa
Guida per implementare next e prev: http://www.giorgiotave.it/forum/joomla/216299-risolto-problema-paginazione-blog-joomla.html#post1108193
Per il *canonical *il problema con le ultime release di Joomla! 3 non si pone perché è già previsto questo comportamento.
Testa e facci sapere com'è andata.
-
-
Salve
ritorno con un nuovo problema
ho notato su web master tool che google ha trovato dei contenuti duplicati
/it/ home. html ? catid=0 & id=4
che mi restiruisce un'articolo del mio sito
potreste aiutarmi
come potrei risolvere?
-
Ciao, puoi indicare i due urls?
-
@FDA said:
Ciao, puoi indicare i due urls?
la prima è (quella corretta)
w w w .miosito. com / it / categoria / sottocategoria / alias-articolo
la seconda
w w w .miosito. com / it / home. html ? catid=0 & id=4
non ho capito come google abbia trovato la seconda