Réécrire des URL "a posteriori"
20 messages
• Page 1 sur 2 • 1, 2
-

OTP - Modérateur

- Messages: 19532
- Inscription: 16 Déc 2005
Réécrire des URL "a posteriori"
Bonjour,
J'ai une série de pages www.example.com/nom_de_la_page.php où nom_de_la_page.php est le titre de la page et n'obéit pas à une règle logique.
Je voudrais supprimer toutes ces pages php statiques pour les remplacer par une seule www.example.com/page.php?id=id_page dynamique.
Je sais bien créer une table sql base qui fera les équivalents entre les id_page et les nom_de_la_page, mais quelle règle de réécriture utiliser, et comment faire "causer" ensemble .htaccess et sql ?
Je n'ai aucune idée de comme faire ça, un peu d'aide sera la bienvenue !
Merci d'avance,
Michaël
J'ai une série de pages www.example.com/nom_de_la_page.php où nom_de_la_page.php est le titre de la page et n'obéit pas à une règle logique.
Je voudrais supprimer toutes ces pages php statiques pour les remplacer par une seule www.example.com/page.php?id=id_page dynamique.
Je sais bien créer une table sql base qui fera les équivalents entre les id_page et les nom_de_la_page, mais quelle règle de réécriture utiliser, et comment faire "causer" ensemble .htaccess et sql ?
Je n'ai aucune idée de comme faire ça, un peu d'aide sera la bienvenue !
Merci d'avance,
Michaël
-

rudddy - WRInaute accro

- Messages: 2570
- Inscription: 1 Aoû 2007
je ne pense pas
tu devrais absolument mettre le id de la page dans ton url, mais tu ne veux pas changer le format (surement pour un problème de netlinking interne e externe) je te comprends
out dépend de la quantité de page (plutôt 20 ou 200000 ?)
tu devrais absolument mettre le id de la page dans ton url, mais tu ne veux pas changer le format (surement pour un problème de netlinking interne e externe) je te comprends
out dépend de la quantité de page (plutôt 20 ou 200000 ?)
-

Mumuri - WRInaute passionné

- Messages: 1800
- Inscription: 3 Nov 2004
etape 1 : refait ton site en dynamique avec cette partie sql dont tu as parlés
etape 2 : réécrit les urls avec les idpages dans toutes tes pages
function url($idPage,$titleName=null){
return "page.php?id=$idPage";
}
test que tout marche bien avec ton nouveau site
etape 3 : récupére les noms des titres de tes pages et passe les à ta fonction plus haut, tu peux imaginer un truc dans ce genre là
$isUrlRewriting=true;
function url($idPage,$titleName=null){
global $isUrlRewriting;
if($isUrlRewriting)
return $titleName."-".$idPage.".html";
else
return "page.php?id=$idPage";
}
etape 4 : met en place une régle de rewriting dans ton htcesss qui va te réécrire
[a-zA-Z-]*."-".[0-9]+.".html" vers page.php?id={parametre2}
notes : c'est que du pseudo code, le but est de comprendre comment çà marche pas pas que çà tourne direct...
-------------
EDIT j'avais pas vu les posts entre temps,
si il est possible de ne pas mettre l'idpage dans l'url (c'est ce qui est fait sur spip), tu dois stocker le nom de ta page dans une colonne en plus dans ta table "article" .... mais dans ces cas là c'est peut être plus intelligent de passer à spip tout court
ensuite, tu fais une redirection de toutes tes pages vers un page.php?title= et tu fais une sélection dans la base sur la colonne concerné ...
etape 2 : réécrit les urls avec les idpages dans toutes tes pages
function url($idPage,$titleName=null){
return "page.php?id=$idPage";
}
test que tout marche bien avec ton nouveau site
etape 3 : récupére les noms des titres de tes pages et passe les à ta fonction plus haut, tu peux imaginer un truc dans ce genre là
$isUrlRewriting=true;
function url($idPage,$titleName=null){
global $isUrlRewriting;
if($isUrlRewriting)
return $titleName."-".$idPage.".html";
else
return "page.php?id=$idPage";
}
etape 4 : met en place une régle de rewriting dans ton htcesss qui va te réécrire
[a-zA-Z-]*."-".[0-9]+.".html" vers page.php?id={parametre2}
notes : c'est que du pseudo code, le but est de comprendre comment çà marche pas pas que çà tourne direct...
-------------
EDIT j'avais pas vu les posts entre temps,
si il est possible de ne pas mettre l'idpage dans l'url (c'est ce qui est fait sur spip), tu dois stocker le nom de ta page dans une colonne en plus dans ta table "article" .... mais dans ces cas là c'est peut être plus intelligent de passer à spip tout court
ensuite, tu fais une redirection de toutes tes pages vers un page.php?title= et tu fais une sélection dans la base sur la colonne concerné ...
Dernière édition par Mumuri le Lun Juil 07, 2008 12:41, édité 1 fois.
-

rudddy - WRInaute accro

- Messages: 2570
- Inscription: 1 Aoû 2007
Mumuri a écrit:si il est possible de ne pas mettre l'idpage dans l'url (c'est ce qui est fait sur spip), tu dois stocker le nom de ta page dans une colonne en plus dans ta table "article" .... mais dans ces cas là c'est peut être plus intelligent de passer à spip tout court
+10000
-

Mumuri - WRInaute passionné

- Messages: 1800
- Inscription: 3 Nov 2004
rudddy a écrit:Mumuri a écrit:si il est possible de ne pas mettre l'idpage dans l'url (c'est ce qui est fait sur spip), tu dois stocker le nom de ta page dans une colonne en plus dans ta table "article" .... mais dans ces cas là c'est peut être plus intelligent de passer à spip tout court
+10000
le probléme c'est que son pattern doit pas être en conflit avec ces urls déjà rewrité, à la limite si tu as déjà un id dans tout tes autres urls rewrité, çà peut passer un truc [a-zA-Z-]*\.php
Dernière édition par Mumuri le Lun Juil 07, 2008 12:46, édité 1 fois.
-

Marie-Aude - Modérateur

- Messages: 11898
- Inscription: 5 Juin 2006
Tu peux parfaitement faire une seule ligne dans ton htaccess
Etape 1 : tu fais une base de données avec la correspondance id - nom de page statique (en gardant la même)
Etape 2 : tu fais un url rewriting sur la base du nom de la page que tu récupères en paramètres (get)
Etape 3 : à l'intérieur de ta page index, tu interroges ta table de l'étape 1, et tu sors la correspondance entre id et nom
Evidemment, si c'est du fait maison, on peux simplifier en donnant pour id le nom de la page.
Ainsi, pour une page eolienne-beaufort.html
ta rewrite rule sera
Tu as donc le nom en parametre, donc ton index sera appelé page.php?name=eolienne-beaufort
Ensuite dans ton index php tu appelles ton id.
Tu conserves tes urls d'origine avec ce système.
Etape 1 : tu fais une base de données avec la correspondance id - nom de page statique (en gardant la même)
Etape 2 : tu fais un url rewriting sur la base du nom de la page que tu récupères en paramètres (get)
Etape 3 : à l'intérieur de ta page index, tu interroges ta table de l'étape 1, et tu sors la correspondance entre id et nom
Evidemment, si c'est du fait maison, on peux simplifier en donnant pour id le nom de la page.
Ainsi, pour une page eolienne-beaufort.html
ta rewrite rule sera
- Code: Tout sélectionner
RewriteRule ^([a-zA-Z-]+)\.html$ /index.php?name=$1 [L]
Tu as donc le nom en parametre, donc ton index sera appelé page.php?name=eolienne-beaufort
Ensuite dans ton index php tu appelles ton id.
Tu conserves tes urls d'origine avec ce système.
Dernière édition par Marie-Aude le Lun Juil 07, 2008 12:47, édité 1 fois.
20 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Réécrire mes "html" en "php"
- Réécrire URL (remplacer une url par un mot)
- HS: réécrire une url
- Réécrire une url GET
- Réécrire une url dyndns
- J`aimerait réecrire mes url ( mod_rewrite )
- Réécrire les URL de pages existantes
- je n'arrive pas a réecrire cette url ??,
- Réécrire des URL avec un p... de point d'interrogation ?
- Réécrire une seule url ? avec .htaccess
Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl
- Analyse de popularité
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées. - Transformer des simples citations de votre site en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
