modifier un url rewriting
17 messages
• Page 1 sur 2 • 1, 2
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
modifier un url rewriting
Bonjour à tous,
Je reviens vers mon bon vieux WRI, après mes errements du début.
Je me retrouve avec des url un peu moches et longues :
http://www.enseignons.be/secondaire/pre ... -1456.html
Je voudrais en faire des url plus courtes, mais aimerais garder le référencement qui a été établi.
Que dois-je inscrire dans le rewriting pour rediriger les visiteurs de manière
permanente d'une ancienne url rewritée à la nouvelle ?
Je reviens vers mon bon vieux WRI, après mes errements du début.
Je me retrouve avec des url un peu moches et longues :
http://www.enseignons.be/secondaire/pre ... -1456.html
Je voudrais en faire des url plus courtes, mais aimerais garder le référencement qui a été établi.
Que dois-je inscrire dans le rewriting pour rediriger les visiteurs de manière
permanente d'une ancienne url rewritée à la nouvelle ?
- magic corp.
- WRInaute occasionnel

- Messages: 428
- Inscription: 17 Juin 2004
Soit avec RedirectPermanent ... (Necessite d'ecrire tout les liens)
Soit avec RedirectMatch 301 ... (Peut utiliser les expression regulière)
Soit avec RewriteRule ... [R=301] (Tu dois connaitre
)
Soit via ton script PHP (Pratique si tu as besoin de cherché des info dans une base de donnée pour inclure des mots clef, etc...)
Les solutions sont vaste, tout dépand des URL de départ et d'arrivé.
Soit avec RedirectMatch 301 ... (Peut utiliser les expression regulière)
Soit avec RewriteRule ... [R=301] (Tu dois connaitre
Soit via ton script PHP (Pratique si tu as besoin de cherché des info dans une base de donnée pour inclure des mots clef, etc...)
Les solutions sont vaste, tout dépand des URL de départ et d'arrivé.
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
Tu as des liens d'explications pour chacune de ces méthodes ?
Quand tu dis écrire tous les liens, c'est chaque url où le rewriting fait son effet ??? C'est trop lourd ça
Je peux faire deux rewriterule ? ?
viewtopic.php?t=$1 topic-$1.html
topic-$1.html vers sujet-$1.html ???
Que veux-tu dire quand tu dis "via ton script php" ?? L'idée est de ne pas perdre le référencement sur les pages existants déjà, comment serait-ce possible via le script ??
Merci de ces précisions
Quand tu dis écrire tous les liens, c'est chaque url où le rewriting fait son effet ??? C'est trop lourd ça
Je peux faire deux rewriterule ? ?
viewtopic.php?t=$1 topic-$1.html
topic-$1.html vers sujet-$1.html ???
Que veux-tu dire quand tu dis "via ton script php" ?? L'idée est de ne pas perdre le référencement sur les pages existants déjà, comment serait-ce possible via le script ??
Merci de ces précisions
- magic corp.
- WRInaute occasionnel

- Messages: 428
- Inscription: 17 Juin 2004
nizouille a écrit:Tu as des liens d'explications pour chacune de ces méthodes ?
Pour les trois première, je te renvoi à la doc Apache
http://httpd.apache.org/docs/1.3/mod/mo ... directperm
http://httpd.apache.org/docs/1.3/mod/mo ... irectmatch
http://httpd.apache.org/docs/1.3/mod/mo ... ewriteRule
C'est la vesion anglaise, mais ça se trouve en FR
nizouille a écrit:Quand tu dis écrire tous les liens, c'est chaque url où le rewriting fait son effet ??? C'est trop lourd ça
Après relecture, laisse tomber cette solution car elle ne marchera pas.
nizouille a écrit:Je peux faire deux rewriterule ? ?
viewtopic.php?t=$1 topic-$1.html
topic-$1.html vers sujet-$1.html ???
Dans mon idée, tu commence dabort par créer ton nouveau rewrite, une fois qu'il fonctionne (sur un serveur de test) tu cherche comment faire pour passé de l'ancien rewrite vers le nouveau.
Donc si par example :
Ancienne URL : -http://.../preparations-secondaire-29-5-argumentation-blalbla.html
Nouvelle URL : -http://.../topic-29-5.html
OU
Ancienne URL : -http://.../truc-chose-43-8-pipo-blabla-truc.html
Nouvelle URL : -http://.../topic-43-8.html
C'est à dire que les nouvelle URL ne possède aucune info qui ne puisse être trouvé dans l'ancienne URL ou qui ne soit standard a toute les URL.
Dans ce cas tu peut partir sur du RewriteRule ou du RedirectMatch (RedirectMatch me paret plus indiqué à cause du contexte mais RewriteRule fonctionnera aussi)
Sinon, tu peut passer par ton script PHP (Voir reponse d'après)
nizouille a écrit:Que veux-tu dire quand tu dis "via ton script php" ?? L'idée est de ne pas perdre le référencement sur les pages existants déjà, comment serait-ce possible via le script ??
Le principe est simple. ton ancien et ton nouveau rewrite aboutise sur le même fichier, donc tu met en place ton nouveau rewrite et tu garde le ancienne règle. Donc quand quelqu'un arrive sur une page via une ancienne URL tu rewrite vers le bon fichier comme ça à toujours fonctionné. Mais au début de ton script, tu test pour voir si le visiteur est arrivé sur cette page avec l'ancienne URL ou la nouvelle ($_SERVER['REQUEST_URI']) et si c'est l'ancienne, tu redirige vers la nouvelle URL (header("HTTP/1.1 301 Moved Permanently"); header('Location: ' . $nouvelle_url_rewriter); )
J'ai toujours de la peine à être clair dans mes explications, mais le coup du PHP, je l'utilise en prod pour verifé qu'il n'y a pas de faute d'orthographe dans mes URL et si c'est le cas je rediriges vers la bonne URL.
Exemple :
-http://www.coutellerie.ch/swiss-champ-xavt--p705.php (URL corecte)
-http://www.coutellerie.ch/welcome-to-wri--p705.php (URL pas corecte, donc redirigé vers la première car seul le "p705" est important)
N'hésite pas si tu as des question.
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
Je n'hésite pas, vu le nombre de questions que je me pose
Le problème est qu'il y a parfois des éléments de mon ancienne url qui disparaissent dans la nouvelle ... Parfois des nouveaux éléments dans la nouvelle url ..
Comment puis-je faire ?
RedirectMatch ^preparations-fondamental-([0-9]+{1})-(.+{2})-([0-9]+{3}).html$ http://localhost/fondamental/preparations-$1-$2-$3.html
RewriteRule preparations-([0-9]+)-(.+)-([0-9]+)\.html$ preparations.php?id_cours=$1&titre=$2&iddoc=$3
Ca ne fonctionne pas ... Je m'y connais très peu en regexp
Merci de votre aide !
Le problème est qu'il y a parfois des éléments de mon ancienne url qui disparaissent dans la nouvelle ... Parfois des nouveaux éléments dans la nouvelle url ..
Comment puis-je faire ?
RedirectMatch ^preparations-fondamental-([0-9]+{1})-(.+{2})-([0-9]+{3}).html$ http://localhost/fondamental/preparations-$1-$2-$3.html
RewriteRule preparations-([0-9]+)-(.+)-([0-9]+)\.html$ preparations.php?id_cours=$1&titre=$2&iddoc=$3
Ca ne fonctionne pas ... Je m'y connais très peu en regexp
Merci de votre aide !
- magic corp.
- WRInaute occasionnel

- Messages: 428
- Inscription: 17 Juin 2004
nizouille a écrit:Le problème est qu'il y a parfois des éléments de mon ancienne url qui disparaissent dans la nouvelle ... Parfois des nouveaux éléments dans la nouvelle url ..
Comment puis-je faire ?
Si c'est trop complexe (ex: lectur d'information dans un base de données) je gererais ça dans un script PHP. genre une regle pour l'ancienne URL vers un fichier qui lui traitera les info qu'il reçois et qui complétera si besoin les information manquante et qui redirigera vers la nouvelle URL.
nizouille a écrit:RedirectMatch ^preparations-fondamental-([0-9]+{1})-(.+{2})-([0-9]+{3}).html$ http://localhost/fondamental/preparations-$1-$2-$3.html
RewriteRule preparations-([0-9]+)-(.+)-([0-9]+)\.html$ preparations.php?id_cours=$1&titre=$2&iddoc=$3
Je supose que tu as une erreur 500 ?
Et comme ça :
- Code: Tout sélectionner
RedirectMatch ^preparations-fondamental-([0-9]+)-(.+)-([0-9]+)\.html$ http://localhost/fondamental/preparations-$1-$2-$3.html
RewriteRule preparations-([0-9]+)-(.+)-([0-9]+)\.html$ preparations.php?id_cours=$1&titre=$2&iddoc=$3
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
RewriteRule preparations-fondamental-([0-9]+)-(.+)-([0-9]+).html$ preparations-$1-$2-$3.html [R=301]
RewriteRule preparations-([0-9]+)-(.+)-([0-9]+)\.html$ preparations.php?id_cours=$1&titre=$2&iddoc=$3
Finalement, j'y arrive avec ceci ...
MAIS, dès qu'il y a une information supplémentaire :
Ex :
http://www.enseignons.be/fondamental/co ... al-18.html
qui devrait devenir si tout se passe bien :
http://www.enseignons.be/fondamental/co ... is-18.html
ça je n'y arrive pas ... Peux-tu m'aider ?
Par ailleurs, j'ai aussi du mal quand je dois supprimer une information qui se trouve non pas en début d'url (j'utilise alors l'astuce de passer la variable dans le nom : preparations-fondamental ). Mais dans des cas où la variable est au milieu du schmilblick des variables et que c'est justement elle que je dois enlever, là ça coince
Merci de ton aide précieuse (et merci de valider le code que j'ai mis là-dessus)
Benjamin
Benjamin
RewriteRule preparations-([0-9]+)-(.+)-([0-9]+)\.html$ preparations.php?id_cours=$1&titre=$2&iddoc=$3
Finalement, j'y arrive avec ceci ...
MAIS, dès qu'il y a une information supplémentaire :
Ex :
http://www.enseignons.be/fondamental/co ... al-18.html
qui devrait devenir si tout se passe bien :
http://www.enseignons.be/fondamental/co ... is-18.html
ça je n'y arrive pas ... Peux-tu m'aider ?
Par ailleurs, j'ai aussi du mal quand je dois supprimer une information qui se trouve non pas en début d'url (j'utilise alors l'astuce de passer la variable dans le nom : preparations-fondamental ). Mais dans des cas où la variable est au milieu du schmilblick des variables et que c'est justement elle que je dois enlever, là ça coince
Merci de ton aide précieuse (et merci de valider le code que j'ai mis là-dessus)
Benjamin
Benjamin
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
Tu aurais un exemple de script pour gérer l'ajout d'informations, ou un début d'explications, que j'essaie d'explorer ça sur une bonne base ?
Je suppose que tu utililiserais le header:Location, etc.
Toute info m'aidera, merci beaucoup
Benjamin
Je suppose que tu utililiserais le header:Location, etc.
Toute info m'aidera, merci beaucoup
Benjamin
- magic corp.
- WRInaute occasionnel

- Messages: 428
- Inscription: 17 Juin 2004
Il n'y a malheureusement pas de solution "clef en main" mais je vais essayer de t'éclairer comme je peu.
1)
Pour le code que tu donnes, il a l'air bon (d'un point de vu syntaxique) et ne devrais normalement pas te donner d'erreur 500.
J'apportérais juste une modif sur "...([0-9]+).html$ pre..." en ajoutant un "\" devant le point du ".html" soit "...([0-9]+)\.html$ pre...". Ca marche sans, mais je pense que c'est une bonne habitude à prendre.
2)
Pour :
Je pense qu'il te faud un script PHP si tu veux traité les lien de manière dynamique.
Si tu me donne la version NON rewrité des ses deux liens, je pourrais peut-être approfondire.
3)
Je vais prendre un exemple:
Ancien lien : -http://www.enseignons.be/fondamental/cours-francais-18.html
Nouveau lien : -http://www.enseignons.be/fondamental/cours-18.html
Dans ce cas je verais une règle style :
OU
Mais dans ce cas, c'est une règle par lien existant ...
pas terrible comme solution, mais ça peut dépanner.
Donne mois un exemple concret qui te pose problème, se serra plus simple.
1)
Pour le code que tu donnes, il a l'air bon (d'un point de vu syntaxique) et ne devrais normalement pas te donner d'erreur 500.
J'apportérais juste une modif sur "...([0-9]+).html$ pre..." en ajoutant un "\" devant le point du ".html" soit "...([0-9]+)\.html$ pre...". Ca marche sans, mais je pense que c'est une bonne habitude à prendre.
2)
Pour :
MAIS, dès qu'il y a une information supplémentaire :
Ex :
-http://www.enseignons.be/fondamental/cours-fondamental-18.html
qui devrait devenir si tout se passe bien :
-http://www.enseignons.be/fondamental/cours-francais-18.html
ça je n'y arrive pas ... Peux-tu m'aider ?
Je pense qu'il te faud un script PHP si tu veux traité les lien de manière dynamique.
Si tu me donne la version NON rewrité des ses deux liens, je pourrais peut-être approfondire.
3)
Par ailleurs, j'ai aussi du mal quand je dois supprimer une information qui se trouve non pas en début d'url (j'utilise alors l'astuce de passer la variable dans le nom : preparations-fondamental ). Mais dans des cas où la variable est au milieu du schmilblick des variables et que c'est justement elle que je dois enlever, là ça coince
Je vais prendre un exemple:
Ancien lien : -http://www.enseignons.be/fondamental/cours-francais-18.html
Nouveau lien : -http://www.enseignons.be/fondamental/cours-18.html
Dans ce cas je verais une règle style :
- Code: Tout sélectionner
RewriteRule /(.+)/cours-.+-([0-9]+)\.html /$1/cours-$2.html [R=301,L]
OU
- Code: Tout sélectionner
RewriteRule /fondamental/cours-francais-18\.html /fondamental/cours-18.html [R=301,L]
Mais dans ce cas, c'est une règle par lien existant ...
- Code: Tout sélectionner
RewriteRule /fondamental/cours-francais-18\.html /fondamental/cours-18.html [R=301,L]
RewriteRule /fondamental/cours-francais-19\.html /fondamental/cours-19.html [R=301,L]
RewriteRule /fondamental/cours-francais-20\.html /fondamental/cours-20.html [R=301,L]
...
pas terrible comme solution, mais ça peut dépanner.
Donne mois un exemple concret qui te pose problème, se serra plus simple.
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
Pour la version non-rewritée :
Ancien lien :
RewriteRule cours-(.+)-([0-9]+)\.html$ cours.php?niveau=$1&id_cours=$2
ce qui donne : http://www.enseignons.be/fondamental/co ... al-18.html
Ce que j'aimerais
http://www.enseignons.be/fondamental/co ... is-18.html
Mon nouveau rewrite :
RewriteRule cours-(.+)-([0-9]+)\.html$ cours.php?cours=$1&id_cours=$2
------------------
Pour ce qui est de l'exemple concret de ce qui me pose problème :
URL actuelle :
http://www.enseignons.be/secondaire/res ... 5-4-0.html
URL désirée :
http://www.enseignons.be/secondaire/res ... 9-4-0.html
Suppression de $niveau (secondaire), ça j'applique la règle ci-dessus
Mais pour supprimer $intitule (5) (dans ma redirection toujours), ça c'est la merdouille ...
Merci beaucoup beaucoup beaucoup pour ton assistance ...
Ancien lien :
RewriteRule cours-(.+)-([0-9]+)\.html$ cours.php?niveau=$1&id_cours=$2
ce qui donne : http://www.enseignons.be/fondamental/co ... al-18.html
Ce que j'aimerais
http://www.enseignons.be/fondamental/co ... is-18.html
Mon nouveau rewrite :
RewriteRule cours-(.+)-([0-9]+)\.html$ cours.php?cours=$1&id_cours=$2
------------------
Pour ce qui est de l'exemple concret de ce qui me pose problème :
URL actuelle :
http://www.enseignons.be/secondaire/res ... 5-4-0.html
URL désirée :
http://www.enseignons.be/secondaire/res ... 9-4-0.html
Suppression de $niveau (secondaire), ça j'applique la règle ci-dessus
Mais pour supprimer $intitule (5) (dans ma redirection toujours), ça c'est la merdouille ...
Merci beaucoup beaucoup beaucoup pour ton assistance ...
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
Par ailleurs, pour la soluce handmade, c'est un peu bof, parce que il y a plus de 60 liens comme ça ...
Tu aurais un début de script pour le header location ? J'ai un peu cherché, mais rien trouvé de très concret ...
J'espère que j'abuse pas trop.
Tu aurais un début de script pour le header location ? J'ai un peu cherché, mais rien trouvé de très concret ...
J'espère que j'abuse pas trop.
- magic corp.
- WRInaute occasionnel

- Messages: 428
- Inscription: 17 Juin 2004
1)
OK c'est plus clair avec un exemple, merci
Je dirais qu'au niveau htaccess tu as une règle valable pour les nouvelle et ancienne URL.
Puis dans "cours.php" au tout debut il faud que tu test la variable "cours" et tu détermine si ça valeur est correct, c'est dire qu'elle vaut "francais" ou autre mais pas "fondamental" ou autre. Pour que ça fonctionne sans problème, il faud être sûr que "cours" ne soit jamais egale à une valeur que pouvait avoir "niveau".
Ensuite si le test est OK et que c'est donc une des nouvelle URL, tu continus ton script normalement mais si le test est pas OK et que "cours" à enfaite une valeur de "niveau" dans ce cas tu crée la nouvelle URL valide et ensuite tu utilise la fonction php "header()".
2)
Je dirais que sa, ça devrais faire l'affaire :
OK c'est plus clair avec un exemple, merci
Je dirais qu'au niveau htaccess tu as une règle valable pour les nouvelle et ancienne URL.
- Code: Tout sélectionner
RewriteRule cours-(.+)-([0-9]+)\.html$ cours.php?cours=$1&id_cours=$2 [L]
Puis dans "cours.php" au tout debut il faud que tu test la variable "cours" et tu détermine si ça valeur est correct, c'est dire qu'elle vaut "francais" ou autre mais pas "fondamental" ou autre. Pour que ça fonctionne sans problème, il faud être sûr que "cours" ne soit jamais egale à une valeur que pouvait avoir "niveau".
Ensuite si le test est OK et que c'est donc une des nouvelle URL, tu continus ton script normalement mais si le test est pas OK et que "cours" à enfaite une valeur de "niveau" dans ce cas tu crée la nouvelle URL valide et ensuite tu utilise la fonction php "header()".
- Code: Tout sélectionner
header('HTTP/1.1 301 Moved Permanently'); // Indique la redirection
header('Location: http://www.enseignons.be/fondamental/cours-francais-18.html'); // Indique l'URL sur laquelle rediriger
2)
Je dirais que sa, ça devrais faire l'affaire :
- Code: Tout sélectionner
RewriteRule /(.+)/ressources-.+-([0-9]+)-[0-9]+-([0-9]+)-([0-9]+)\.html /$1/ressources-$2-$3-$4.html [R=301,L]
- magic corp.
- WRInaute occasionnel

- Messages: 428
- Inscription: 17 Juin 2004
nizouille a écrit:Donc en fait, pour supprimer une variable, il suffit de ne pas la mettre entre parenthèses ?
J'essaie de comprendre
Les parenthèses ne serve qu'à faire des retro-reférence (les fameux $1, $2, $3, etc.) Donc si tu les mets, il suffis de sauter les retro-reférence dont tu n'as as besoin :
- Code: Tout sélectionner
RewriteRule /(.+)/ressources-(.+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html /$1/ressources-$3-$5-$6.html [R=301,L]
Ca marchera aussi, mais si c'est pour ne pas en utiliser certaine, au temps ne pas les déclarer (avec des parenthèses)
-

nizouille - WRInaute discret

- Messages: 147
- Inscription: 29 Juil 2004
MERCI MERCI MERCI !!
Tu es le couteau suisse de l'url rewriting
Plus sérieusement, on peut voir avec webdeveloper de firefox, ou avec l'outil pour les header de webrankinfo si le 301 est pris en compte, mais peut-on vérifier la destination du lien (histoire d'en avoir le coeur net
)
Comme il n'y a pas de script php, je suppose que c'est normal que l'adresse dans la barre d'adresse du navigateur ne se modifie pas.
Je me trompe ?
Tu es le couteau suisse de l'url rewriting
Plus sérieusement, on peut voir avec webdeveloper de firefox, ou avec l'outil pour les header de webrankinfo si le 301 est pris en compte, mais peut-on vérifier la destination du lien (histoire d'en avoir le coeur net
Comme il n'y a pas de script php, je suppose que c'est normal que l'adresse dans la barre d'adresse du navigateur ne se modifie pas.
Je me trompe ?
17 messages
• Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
