Ciao Federico,
Hai provato a diagnosticare la correttezza del response con "Crawl -> Fetch as Google"?
E' il modo più affidabile per togliersi il dubbio. Puoi anche scegliere "Send to index" (se ben ricordo dovrebbe funzionare anche se il response è diverso da 200, p.es. un redirect, sennò alla peggio non te lo fa fare).
Avevo già provato usando il tool "Live HTTP Headers" di Firefox, e mi rispondeva correttamente con il 301. Ora per scrupolo ho controllato anche con WGT, e tutto sembra funzionare:
**Visualizza come Google**
Googlebot ha recuperato la pagina in questo modo.
**URL:** corsoinglese.altervista.org/lezione.php?id=3
**Data:** mercoledì 7 agosto 2013 04:08:16 GMT-7
**Tipo Googlebot:** Web
**Tempo di download (in millisecondi):** 402
HTTP/1.1 301 Moved Permanently
Server: cloudflare-nginx
Date: Wed, 07 Aug 2013 11:08:20 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d7e1743c6116032d454be04138bc21b351375873699974; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.corsoinglese.altervista.org
Location: lezione.php?id=3&grammatica=genitivo-sassone
CF-RAY: 9a38220d453059d
Quindi non ho idea di cosa non vada bene..
Come l'hai bloccato? Ritornando lato server un errore 500?
Mi sembra un po' pericoloso.
L'uso del canonical tag è più sicuro (se il 301 per qualche motivo non è correttamente implementabile)
No, mi sono espresso male; non l'ho bloccato dal server, restituisco solo un messaggio del tipo "L'url cercato è stato spostato a questa pagina: xxx". Se vuoi dare un'occhiata la pagina in questione è questa: corsoinglese.altervista.org/lezione.php?id=28 . So che corro il rischio di non vedere più quella pagina nell'indice di Google, ma ho scelto una delle meno visitate e non mi comporterà problemi. In questo caso, tentar non nuoce!