Rewrite d'URL avec paramètres dynamiques

Discussion dans 'URL Rewriting et .htaccess' créé par Sparrow, 13 Avril 2011.

  1. Sparrow
    Sparrow Nouveau WRInaute
    Inscrit:
    12 Avril 2011
    Messages:
    7
    J'aime reçus:
    0
    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
     
  2. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    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] 
     
  3. Sparrow
    Sparrow Nouveau WRInaute
    Inscrit:
    12 Avril 2011
    Messages:
    7
    J'aime reçus:
    0
    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.
     
  4. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    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.
     
  5. Sparrow
    Sparrow Nouveau WRInaute
    Inscrit:
    12 Avril 2011
    Messages:
    7
    J'aime reçus:
    0
    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.
     
  6. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    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;
    	}
     
  7. Sparrow
    Sparrow Nouveau WRInaute
    Inscrit:
    12 Avril 2011
    Messages:
    7
    J'aime reçus:
    0
    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
     
Chargement...
Similar Threads - Rewrite paramètres dynamiques Forum Date
Comment opter pour RewriteCond afin de rediriger plusieurs parametres dans l'url URL Rewriting et .htaccess 26 Décembre 2016
.htaccess url rewrite Enlever les parametres Netlinking, backlinks, liens et redirections 10 Avril 2013
Inclure des variables php qui ne soit pas des paramètres dans rewrite URL Rewriting et .htaccess 28 Avril 2009
RegExp du Rewrite URL Rewriting et .htaccess 19 Décembre 2019
Ne prendre qu'une partie d'un QueryString dans une regex RewriteCond URL Rewriting et .htaccess 9 Décembre 2019
Astuce RewriteMap : convertir un .dbm.pag en txt ? Débuter en référencement 8 Juillet 2019
rewriteRule sur wamp erreur 404 URL Rewriting et .htaccess 20 Avril 2019
URL Rewriting : difficultés avec RewriteCond ? URL Rewriting et .htaccess 5 Décembre 2018
Problème avec ma ligne rewrite URL Rewriting et .htaccess 20 Juin 2018
Déplacer les RewriteRule du .htaccess vers le vhost URL Rewriting et .htaccess 16 Janvier 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice