Ho un serio problema che non riesco a risolvere .. in pratica il clean url mi crea una pagina tipo
http://www.domio.tld/titolo-completo
Ma con google viene visto non solo questo ma anche una cosa come
http://www.domio.tld/titolo-completo?page=1
http://www.domio.tld/titolo-completo?page=2
http://www.domio.tld/titolo-completo?page=3
http://www.domiio.tld/titolo-completo?page=4
che non ha senso ... non esistono da nessuna parte ... ma puntano tutti alla stessa pagina ... come posso evitare questo ? Dove posso agire sul clean_url ? Ho cercato nella tabella del clean_url ma questi links non ci sono ...
Sono links canonici multipli ma non so come risolvere la cosa ...
Ho provato a controllare ma niente risultati non saprei dove mettere mano per questa cosa
Succede anche a me, ma mi chiedo... è grave? E' una statistica, quindi un servizio per utenti "esperti" nel leggere certi risultati.
È grave sì ... perchè viene riconosciuto come errore da google e penalizza l'indicizzazione ... non solo è accaduto ma mi è stato confermato da google stessa .... per cui si deve trovare una soluzione ... ad esempio ho un indirizzo che appare che non esiste da nessuna parte:
www.dodicesimotasto.it/panorama_musica_spettacolo_tutto/panorama_musica_...
Nessuno dico nessuno ha mai creato una cosa del genere. A parte quando stavo facendo delle prove ma poi tutto è stato eliminato. Questa schifezza non appare da nessuna parte eppure ci deve essere perchè sitemap l'ha trovata ... cose come questa mi hanno fatto retrocedere nell'indicizzazione ed è una cosa che non mi piace per niente
Prendiamolo come spunto...
Mi pare che tale problema era già sorto con gli url doppi per via dello slash finale tipo:
www.sito.com/ciao
e
www.sito.com/ciao/[/codefilter_code]
risolto con modifiche al .htaccess (ma ancora non l'ho pubblicato quindi non so se effettivamente funziona o meno).
Forse la stessa cosa si può applicare a questo caso?
non ne ho idea ma bisogna stare molto attenti a toccare htaccess quando si è su aruba ... spesso dà error 500 e sembra che abbia tentato di distruggere i mondo ... niente giustifica il fatto che lui mantenga url strani ed inesistenti, o crei pagine fantasma ...
Bisognerebbe capire da dove viene fuori il parametro page. Hai qualche indizio sul fatto che sia Drupal a creare link a pagine identiche con il parametro?
Prova a fare uno scaricamento con wget -m (e altri parametri che non ricordo) per verificare se è Drupal a creare questi URL.
L'accesso non l'ho completo per cui non posso usare wget in quanto il server è condiviso ... che sia drupal ne sono certo perchè i finti links sono correlati a drupal nel senso
http://www.miostio.tld/pagina-vera esiste realmente e l'ho fatta io ed è in drupal
http://www.miostio.tld/pagina-vera?page=1
http://www.miostio.tld/pagina-vera?page=2
http://www.miostio.tld/pagina-vera?page=3
http://www.miostio.tld/pagina-vera?page=4
puntano a drupal stessa pagina ... inoltre questi links c'erano in sitemap e l'ho modificato in modo che non li presenti ... così come nel robot li ho bloccati ... ma non deve farlo anche perchè pare che in qualche modo google li vada a cercare anche se poi con le porte chiuse non li trova ... allora iniziano i messaggi di links non trovati etc per quanto riguarda i links fantasma stessa storia ma NON POSSO bloccarli con sitemap perchè sono talmente generici che c'è il pericolo di bloccare links veri ... io voglio sapere dove li va a prendere ... perchè va bloccato tutto ... c'è qualcosa che non va nel clean url o è altro ?
L'hai detto tu stesso: è Google che se li va a cercare. E guarda che in qualsiasi sito, se digiti http://miosito.it/pagina.html?page=1 non ti viene restituito un errore, ma viene visualizzata regolarmente pagina.html.
La sitemap come l'hai generata?
Inoltre, wget lo puoi usare anche dal tuo PC. Puoi usare anche un qualsiasi altro sw per scaricare in locale i siti web: devi solo impostare il sw per fare in modo che registri nel nome del file anche i parametri, così alla fine capirai se è Drupal a passare quei parametri oppure no.
Sitemap è generato da un php che ho preso in internet ecco il codice
<?php
require("sitemap/config.php");
header("Content-Type: text/xml");
print '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$pageLimit = 50000;
$base = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
$base = substr($base,0,strrpos($base,"/")+1);
$link = mysql_connect($config_databaseServer,$config_databaseUsername,$config_databasePassword);
mysql_select_db($config_databaseName,$link);
if (isset($_GET["page"]))
{
print '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">'."\n";
$page = intval($_GET["page"]);
$from = (($page-1)*$pageLimit);
$sql = "SELECT * FROM ".$config_databaseTablePrefix."urls LIMIT ".$from.",".$pageLimit;
$result = mysql_unbuffered_query($sql,$link);
while($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
if ( !stristr($row["url"], "http://www.dodicesimotasto.it/blog") and
!stristr($row["url"], "/content/") and
!stristr($row["url"], "/logout") and
!stristr($row["url"], "/batch?") and
!stristr($row["url"], "/printmail/") and
!stristr($row["url"], "/my/") and
!stristr($row["url"], ".html?") and
!stristr($row["url"], "?page=") and
!stristr($row["url"], "http://www.dodicesimotasto.it/user") and
!stristr($row["url"], "http://www.dodicesimotasto.it/users") and
!stristr($row["url"], "http://www.dodicesimotasto.it/admin") and
!stristr($row["url"], "http://www.dodicesimotasto.it/profile") and
!stristr($row["url"], "http://www.dodicesimotasto.it/Forum/chat.html") and
!stristr($row["url"], "/node/") and
!stristr($row["url"], "http://www.dodicesimotasto.it/comment/") and
!stristr($row["url"], "http://www.dodicesimotasto.it/chat") and
!stristr($row["url"], "http://www.dodicesimotasto.it/Dodichat") and
!stristr($row["url"], "sid=")) {
print " <url>"."\n";
print ' <loc>'.xmlentities($row["url"]).'</loc>'."\n";
$prio = '0.7';
$freq = 'daily';
if ( stristr($row["url"], "http://www.dodicesimotasto.it/Forum/memberlist.php") or
stristr($row["url"], "http://www.dodicesimotasto.it/mercatino" )) {
$prio = '0.2';
$freq = 'monthly';
} else if ( stristr($row["url"], "http://www.dodicesimotasto.it/recensioni") or
stristr($row["url"], "http://www.dodicesimotasto.it/articoli")) {
$prio = '1.0';
$freq = 'weekly';
} else if ( stristr($row["url"], "http://www.dodicesimotasto.it/panorama-musicale-artistico")) {
$prio = '0.5';
$freq = 'daily';
}
print ' <priority>'.$prio.'</priority>'."\n";
print ' <changefreq>'.$freq.'</changefreq>'."\n";
print ' </url>'."\n";
}
}
print "</urlset>";
}
else
{
print "<sitemapindex xmlns='http://www.google.com/schemas/sitemap/0.84' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/siteindex.xsd'>";
$sql = "SELECT count(*) as count FROM ".$config_databaseTablePrefix."urls";
$result = mysql_query($sql,$link);
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$pages = ceil($row["count"] / $pageLimit);
for($i=1;$i<=$pages;$i++)
{
print " <sitemap>"."\n";
$loc = $base."sitemap.php?page=".$i;
print " <loc>".xmlentities($loc)."</loc>"."\n";
print " </sitemap>"."\n";
}
print "</sitemapindex>";
}
exit();
function xmlentities($text)
{
$search = array('&','<','>','"','\'');
$replace = array('&','<','>','"',''');
$text = str_replace($search,$replace,$text);
return $text;
}
?>
La serie di stristr l'ho messa io per bloccare i siti non richiesti ... per invocarlo e vedere cosa tira fuori ecco
http://www.dodicesimotasto.it/sitemap.php?page=1[/codefilter_code] come vedi tira tutto fuori dal db di drupal
Premesso che non mi sembra il caso di discutere su questo forum il comportamento di uno script che non c'entra niente con Drupal, se visito l'URL che mi dici, nell'XML trovo solo ed esclusivamente voci relative alla cartella /Forum (gestita con un software che non è Drupal) e nel codice dello script si va a richiamare una fantomatica tabella "urls" che non mi risulta esistere nello schema del db di Drupal.
Ho anche provato a fare io il wget, ma il tuo robots.txt blocca tutti gli spider, esclusi quelli esplicitamente ammessi.
due punti importanti:
1 - non sto discutendo dello script ovviamente ma ho risposto ad una tua domanda in modo che sia tutto chiaro ... per cui non reputarlo un off topic
2 - non è vero che tira fuori solo l'indirizzo /Forum ma anche tutto il resto. L'ho analizzato riga per riga e non sono poche perchè sono qualche migliaio ma ho dovuto pfarlo dati gli errori segnalati da google.
Non so da dove tiri fuori urls ... perchè non esiste come tabella ... non l'ho da nessuna parte ... sto veramente diventando matto inoltre gli indirizzi fake sono esclusivamente per drupal ... niente di fake arriva dal forum ...
Allora, grazie a Google ho scoperto che script stai usando (potevi dirlo no?) e ho capito come funziona (quella che hai riportato sopra è solo una parte del processo). Il db che interroga non è il DB di Drupal, ma un suo DB in cui registra gli URL delle pagine man mano che vengono visitate (tra l'altro, detto fra noi, non mi sembra un sistema molto efficiente, in quanto comporta un sacco di chiamate al db inutili). Quindi, l'unica maniera per capire come vengono generati gli URL con l'attributo page è che tu vada a vedere i log (non di Drupal, del webserver) e cerchi di capire come si formano quelle richieste: nei log troverai l'IP di chi ha fatto la richiesta (scommetto che è uno spider) e troverai il referer, cioè la pagina di provenienza di quella richiesta. A questo punto, puoi andare a visitare la pagina di provenienza sul tuo sito e verificare di persona se nel codice trovi link che contengono il parametro; se, come credo, non troverai questi link, è il client (browser, spider?) che se li è inventati per chissà quali ragioni.
Faccio sicuramente come mi hai consigliato. Scusami ho fatto prima a riportare lo script perchè ci sono delle modifiche che ho apportato e che lo rendono diverso dall'originale ... come l'inserimento del changefreq, etc e la serie di links da evitare ... vedo se riesco a risolvere