Aller au contenu

Redirection 301 par URL rewriting


Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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();
}
?>

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Je vais tester ça ce soir.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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