301 et une url avec un "?"

Nouveau WRInaute
Bonjour à tous,

J'avoue que je galère grave sur ce problème. Pas faute d'avoir cherché et d'avoir un peu tout essayé.
Mais peut-être que je passe à côté d'un truc tout bête, comme ça nous arrive tous parfois :mrgreen:

Voilà, un script (je cherche d'où cela peut venir) a donné à Google des Urls du type :
- monsite.com/?34
- monsite.com/?WZ
- Etc.

Ce qui sont autant de duplicat de ma page d'accueil, bien entendu...
J'ai tenté une redirection via htaccess façon 301 mais il ne semble pas considérer monsite.com/?34 comme une Url en fait...

Un grand merci d'avance si des bouts de réponse peuvent apparaître ici ;)
 
WRInaute passionné
Ton code dans le htaccess doit être faux, ça doit être du genre index.php avec comme condition 34 ou WZ.

Mais autre solution est de mettre ces liens dans le robots.txt:

User-agent: *
Disallow: /?34
Disallow: /?WZ
 
Nouveau WRInaute
Bonjour,

Qu'entendez-vous par "ça doit être" ?
Je veux dire, il ne s'agit pas de index.php?id=34, par exemple.
C'est bien http://www.monsite.com/?34 qui est référencé, du coup, pas vraiment une variable si j'ai bien compris...
C'est cela qui doit poser problème du coup ?

Merci pour la réponse ;)
 
WRInaute accro
Tu ne peux en effet pas utiliser de façon simple des rewriteRule en .htaccess avec des "?" dans tes URL
Pour ça, il faudrait utiliser des RewriteCond pour cibler les URL avec des paramètres.

Tu peux essayer quelquechose comme ça :

Code:
RewriteCond %{REQUEST_URI} ^/index.php [NC]
RewriteCond %{QUERY_STRING} ^(.*)
RewriteRule (.*) http://www.example.com/[R=301,L]

Ca va rediriger toute URL appelée sur index.php et qui ont un paramètre (ce qui est le cas ici), mais pas forcément uniquement celles que tu cibles. A tester (je l'ai pas fait) et compléter le cas échéant.
 
Nouveau WRInaute
Bonsoir,

Merci pour la piste, je vais creuser.
En effet, cela ne donne rien avec cette règle. L'url ne bouge pas d'un iota.
Merci vraiment pour la piste en tout cas ;)
 
Nouveau WRInaute
bonjour,

Je ne suis pas un pro de la réécriture d'url, mais je bidouille correctement.
J'avais un autre problème, voir mon post ci-dessous (vers le début) :
https://www.webrankinfo.com/forum/redirection-htaccess-une-anciene-url-php-avec-variable-vers-domaine-base-t171252.html

Peut-être que ce qui provoque tes url avec "/?34", c'est une ou des règles de réécriture dans ton fichier htaccess (ou dans un fichier php).

Si c'est le cas, il faudra modifier ou désactiver cette règle (ou ces règles) pour résoudre ton problème.

Bonne chance

Loïc
 
Nouveau WRInaute
Bonjour Imars,

Après avoir regardé en détail le htaccess et d'ailleurs, d'avoir tout supprimer petit à petit pour voir les effets, rien ne semble malheureusement montré que ça viendrait de là.. :s

Je suis face à un gros défi là, deux jours sur le htaccess à regarder les guides et tout, et je n'arrive pas à faire ma petite redirection, arf...
J'ai donc plusieurs pages dupliquant la page d'accueil indexées sur Google :s

Merci pour vos réponses en tout cas ! ;)
 
WRInaute accro
Sinon, tu peux aussi gérer ça en PHP, en détectant les cas ou ce genre d'URL est appelé et le cas échéant en mettant une redirection 301
 
Nouveau WRInaute
Merci pour l'idée, j'avais en effet pensé le faire via le header en php.
Du coup, mon truc avance. J'ai découvert une page géniale qui regroupe pratiquement tous les cas de figure du htaccess :
http://www.askapache.com/htaccess/htaccess.html, c'est en anglais, mais qu'est-ce que c'est bon !

Du coup, j'ai réussi à faire une redirection sur mon URL mais cela donne une redirection en incluant de nouveau ce petit ?ZE
J'ai fait cela :

Code:
RewriteCond %{HTTP_HOST} !^index\.php?$ [NC]
RewriteRule ^(.*)$ index.php/ [R=301,L]

Cela donne une 301 qui part de monsite.com/?ZE à monsite.com/index.php?ZE
Bon, ça a touché l'url, c'est déjà bon signe.
Edit : cela touche en fait index.php et non spécialement ?ZE, puisque cela fait une redirection sur monsite.com/ tout court également... il n'arrive pas à faire la différence entre index.php et index.php?ZE, qui pour lui (le serveur), reste une même url et une même page...

Merci encore de ne pas m'avoir laissé dans un topic fail ;)
 
WRInaute accro
En Php, tu peux utiliser ça, à placer en début de ton fichier index.php (ou autre si tu as le même souci sur d'autres) :

Code:
// on parse l'URL de la page
$parse=parse_url($_SERVER['REQUEST_URI']);
// on verifie qu'il y a bien une section "query" (paramètre) et qu'elle n'est composé que de chiffres uniquement
if (isset($parse['query']) && preg_match('/^[0-9]{1,}$/',$parse['query'])) {
	//si c'est le cas, on redirige en 301 vers la racine
	header("HTTP/1.1 301 Moved Permanently");
        header("Location:/");
}

Ca va rediriger toutes les URL dont la section "paramètre " (query) n'est composée que de chiffres, mais pas les autres.
 
Nouveau WRInaute
L'entraide, c'est juste génial.
J'espère vraiment aider aussi dès que je le peux !

Effectivement, ça marche nikel pour les chiffres.
Je teste pour les lettres (mon vrai problème en fait ^^) avec un pattern différent.
Code:
if (isset($parse['query']) && preg_match('/^[a-zA-Z]/',$parse['query']))

Edit : Nikel, ça marche !!!!
Merci beaucoup nickargall ;)
 
Discussions similaires
Haut