Version complète: sur le forum Webmaster Hub : Redirection 301 par URL rewriting
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
Jan
Bonjour,
Je cherche à faire une redirection 301 de toutes mes URLs du style -http://www.monsite.com/page.php?parametre=valeur vers -http://www.monsite.com/page.php ("page" dans ces urls est une variable, j'ai plusieurs pages pour lesquelles je veux appliquer cette redirection)

J'écris:
CODE
RewriteRule ^(.*)?parametre=(.*)$ http://www.monsite.com/$1 [R=301,L]

... et ça ne marche pas.

Merci d'avance wink.gif
Dan
Une question pour clarifier, mais je ne répondrai plus ce soir car il se fait tard wink.gif
Tu veux simplement enlever le paramètre de l'expresssion non réécrite ?
Le fichier peut être page.php ou avoir un autre nom ?
Jan
Oui, c'est bien ça, je veux enlever le ?parametre=valeur
page.php n'est pas une page unique. Je veux le faire pour les pages toto.php, tata.php, etc...
Compte supprimé
CITATION(Dan @ mercredi 23 novembre 2005, 23h32)
Une question pour clarifier, mais je ne répondrai plus ce soir car il se fait tard wink.gif

(je suis insomniaque IMSTP5.gif )

Je crois (Dan confirmera demain rolleyes.gif ) que tu ne pas traiter la valeur du query string par .htaccess

Le plus simple, puisque tu garde tes pages, c'est de traiter la redirection via php en tête de celles-ci, en testant le $_GET['parametre']

du genre

CODE
<?php
if (!empty($_GET['parametre']))
{
header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://www.domain.tld".$_SERVER['PHP_SELF']);
exit();
}
?>
Dan
CITATION(jeroen @ jeudi 24 novembre 2005, 01h18)
Je crois (Dan confirmera demain rolleyes.gif ) que tu ne pas traiter la valeur du query string par .htaccess
*


Non, je ne confirme pas smile.gif
On peut traiter le QUERY_STRING dans les expressions conditionnelles, par exemple:
CODE
RewriteEngine On
RewriteCond %{QUERY_STRING} !^$
RewriteRule (.*) $1? [L]


Si le QUERY_STRING n'est pas vide, on réécrit le fichier vers lui-même, mais en enlevant le QUERY_STRING (la raison du ? utilisé seul en fin de règle, assez peu connu et peu documenté, raison pour laquelle tu l'ignorais)

Tu peux facilement éditer cette règle pour le cas où le QUERY_STRING doit avoir une valeur pré-définie, au lieu de tester la chaîne non vide wink.gif
Jan
Merci pour vos réponses, je savais que la nuit portait conseil smile.gif
Je vais tester ça ce soir.
Jan
Hum, je réalise que je n'ai pas assez expliqué mon besoin blush.gif
Je ne veux pas rediriger toutes les urls qui ont un query string, mais seulement celles dont la première variable est "parametre".

J'ai d'autre urls avec variables. Si ces variables sont autre chose que "parametre", elles ne doivent pas être redirigées.
Dan
C'est encore plus simple !
CODE
RewriteEngine On
RewriteCond %{QUERY_STRING} parametre
RewriteRule (.*) $1? [L]
Jan
Parfait, merci Dan.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.