Ticket #1874 (closed defect: wontfix)
Mauvaise gestion des URL par le 'Lang' URLHandler
| Reported by: | prospere | Owned by: | team |
|---|---|---|---|
| Priority: | high | Milestone: | |
| Component: | module:core | Version: | 2.6 |
| Severity: | normal | Keywords: | |
| Cc: |
Description
Les URL gérées par l'URLHandler Lang ne sont pas vérifiées.
Il est possible de passer n'importe quel paramètre, exemple :
http://fr.dotclear.org/blog/quelque-chose-qui-nexiste-pas/et-qoui/qui-nexiste-vraiment-pas/page/2
Il suffit de publier ce lien pour que Google référence une seconde fois toutes les pages du site : page/1, page/2, ....
Du coup Google considère que le site contient du Duplicate Content et produit des warnings dans la console Webmaster tools.
Change History
comment:2 Changed 12 years ago by prospere
Voici une proposition de patch, il suffit de forcer le regexp pour l'URLHandler Home afin de restreindre la structure des URL.
protected static function getPageNumber(&$args,$only_root=false)
{
if ($only_root){
$regexp = '#(^)page/([0-9]+)$#';
}else {
$regexp = '#(^|/)page/([0-9]+)$#';
}
if (preg_match($regexp,$args,$m)) {
$n = (integer) $m[2];
if ($n > 0) {
$args = preg_replace($regexp,'',$args);
return $n;
}
}
return false;
}
comment:3 Changed 12 years ago by nikrou
A mon avis on peut faire encore plus simple. Le problème ne se pose que pour la méthode home. Il suffit d'enlever le test sur la valeur de $n pour renvoyer un 404. On renvoie 404 dès que $args est non vide.
comment:4 Changed 11 years ago by franck
Euh, la home est paginée, si on vire le test sur $n, ça va poser problème, non ?
comment:5 Changed 11 years ago by prospere
La home est paginée, il faudrait s'assurer que si $n est non vide que l'argument passé est bien /page/x et non pas: quelquechose/page/x

Quelques infos sur le forum : http://forum.dotclear.org/viewtopic.php?id=47553