Aller au contenu

Sujets conseillés

Posté

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:

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

... et ça ne marche pas.

Merci d'avance ;)

Posté

Une question pour clarifier, mais je ne répondrai plus ce soir car il se fait tard ;)

Tu veux simplement enlever le paramètre de l'expresssion non réécrite ?

Le fichier peut être page.php ou avoir un autre nom ?

Posté

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...

Posté
Une question pour clarifier, mais je ne répondrai plus ce soir car il se fait tard ;)

(je suis insomniaque :boude: )

Je crois (Dan confirmera demain :rolleyes: ) 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

<?php
if (!empty($_GET['parametre']))
{
header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://www.domain.tld".$_SERVER['PHP_SELF']);
exit();
}
?>

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

Non, je ne confirme pas :)

On peut traiter le QUERY_STRING dans les expressions conditionnelles, par exemple:

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 ;)

Posté

Merci pour vos réponses, je savais que la nuit portait conseil :)

Je vais tester ça ce soir.

Posté

Hum, je réalise que je n'ai pas assez expliqué mon besoin :blush:

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.

Posté

C'est encore plus simple !

RewriteEngine On
RewriteCond %{QUERY_STRING} parametre
RewriteRule (.*) $1? [L]

Posté

Parfait, merci Dan.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...