Rewrite d'URL avec paramètres dynamiques

Nouveau WRInaute
Bonjour,

Je me permets de vous solliciter après 2 jours de recherche sans résultat.
Je m'initie au rewriting avec pas mal de difficultés, je cherche à transformer monsite.com/engine.php?query=acide+yaluronique
en monsite.com/recherche/acide+valuronique

J'ai pensé à rewriteCond, voila une des formules que j'ai essayé :
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule ^/recheche/%1$ /monsite.com/engine.php?query=%1[L,QSA]

Pourriez-vous s'il vous plaît m'éclairer sur la question ?
En vous remerciant par avance.
Cordialement

Sparrow
 
WRInaute passionné
c'est tout simplement :
Code:
RewriteRule ^recherche/(.*)$ /engine.php?query=$1 [L]

après si tu veux faire une redirection de monsite.com/engine.php?query=acide+yaluronique vers monsite.com/recherche/acide+valuronique c'est :
Code:
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule ^engine\.php$ /recherche/%1? [L,R=301]
 
Nouveau WRInaute
Bonjour,

Je vous remercie d'avoir bien voulu prendre le temps de me répondre.
Je viens de tester vos 2 codes.

Code:
RewriteRule ^recherche/(.*)$ /engine.php?query=$1 [L]
le premier fonctionne si je saisi l'url /recherche/yaluronique manuellement.

Par contre, avec la seconde, l'url est bien modifiée à la volée comme je cherchai à le faire.
J'obtiens bien une url /recherche/yaluronique par contre je tombe sur une erreur page "introuvable".
Soit il y a une erreur dans le RewriteRule soit il faudrait pouvoir combiner la RewriteRule de votre seconde solution avec la première.

Encore merci à vous.
 
WRInaute passionné
la réécriture permet juste de pouvoir appeler une page par un autre nom mais laisse l'url d'origine accessible. Il faut donc combiner ces deux règles.

C'est vraiment pas recommandé de le faire systématiquement car tu vas ralentir ton serveur et tes visiteurs pour rien avec deux accès au lieu d'un. Si l'url provient d'un moteur de recherche cela ne doit pas être indexé donc inutile et si l'url se trouve dans des liens tu peux les modifier dans tes pages.
 
Nouveau WRInaute
Un grand merci,

Je cherche à combiner les la rewriteCond avec la première de ton premier post, pas moyen.
J'ai modifier le Flags etc...

L'url que je cherche à modifier provient bien d'un moteur, je cherchais à la modifier pour avoir toutes mes urls propres.
Par contre, si j'ai bien compris la page resterai accessible des 2 manières et ralentirai l'affichage des résultats.

J'ai testé des rewrite que j'avais fait pour des pages statiques, elles restent aussi accessible via les 2 urls (l'ancienne si saisie directement + la nouvelle via les liens internes). Est ce que le fait de pouvoir y accéder de deux manières peut poser des problèmes de duplicate content ?
En vous remerciant par avance.
 
WRInaute passionné
si les anciennes url sont indexée il faut bien évidement faire une redirection pour éviter le duplicate.

Pour gérer cette redirection je te conseille de le faire en php en mettant au début de engine.php :
Code:
	$url_attendue = '/recherche/' . urlencode($_GET['query']);
	if ($url_attendue != $_SERVER['REQUEST_URI'] ) {
		header('Status: 301 Moved Permanently', true, 301);
		header('Location: ' . $url_attendue);
		exit;
	}
 
Nouveau WRInaute
Bonjour,

Un grand merci pour cette astuce.
Désolé pour le temps de réponse (pas d'internet depuis :( )

J'aurai bien aimé résoudre le probleme d'url pour ma recherche, je m'étais que les utilisateur auraient une url vraiment clean
recheche/objet-de-ma-recherche.
Grâce à votre premier post, j'étais bien content de voir que quand l'url était passé avec les paramètres, elle est automatiquement réécrite, c'est top. Par contre, derrière l'url est ok mais il ne trouve pas la page :cry:

Pour le moment, je travail qu'en local mes pages ne sont pas encore indexées.
Juste pour en être certain, lors de l'indexation, ce sont bien les url des liens internes qui seront utilisées en plus des liens externes. Si une page est accessible via 2 url, si j'ai bien pris soin de virer tout les liens pointant vers l'ancienne url, elles ne seront pas indexées, c'est bien ça ?
Merci encore
 
Discussions similaires
Haut