Réécrire des URL "a posteriori"


OTP
Modérateur
Modérateur
 
Messages: 19532
Inscription: 16 Déc 2005

Réécrire des URL "a posteriori"

Message le Lun Juil 07, 2008 12:28

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


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Lun Juil 07, 2008 12:30

déjà, quel format d'url final veux tu ?


OTP
Modérateur
Modérateur
 
Messages: 19532
Inscription: 16 Déc 2005

Message le Lun Juil 07, 2008 12:30

Le même qu'en ce moment !
Mais en dynamique.


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Lun Juil 07, 2008 12:32

vu que ca n'obéit à aucune règle tu sera obligé de aire une ligne par page dans ton htaccess


OTP
Modérateur
Modérateur
 
Messages: 19532
Inscription: 16 Déc 2005

Message le Lun Juil 07, 2008 12:33

On ne peut pas faire autrement ?


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Lun Juil 07, 2008 12:35

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


OTP
Modérateur
Modérateur
 
Messages: 19532
Inscription: 16 Déc 2005

Message le Lun Juil 07, 2008 12:36

Tu as raison, question de netlinking !
Mince alors...


Mumuri
WRInaute passionné
WRInaute passionné
 
Messages: 1800
Inscription: 3 Nov 2004

Message le Lun Juil 07, 2008 12:37

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é ...
Dernière édition par Mumuri le Lun Juil 07, 2008 12:41, édité 1 fois.


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Lun Juil 07, 2008 12:40

mumuri tu me rejoins : on es obligé de passer par un id, mais son netlinking sera mort ...


OTP
Modérateur
Modérateur
 
Messages: 19532
Inscription: 16 Déc 2005

Message le Lun Juil 07, 2008 12:41

Merci Mumuri mais j'ai seulement quelques URL (40 ou 50, pas plus) que je souhaite réécrire. Tout le reste (ou presque) l'es déjà. Ta méthode ne s'appliquera donc pas, si j'ai bien compris.


Mumuri
WRInaute passionné
WRInaute passionné
 
Messages: 1800
Inscription: 3 Nov 2004

Message le Lun Juil 07, 2008 12:41

lis la fin ...
Dernière édition par Mumuri le Lun Juil 07, 2008 12:43, édité 2 fois.


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Lun Juil 07, 2008 12:42

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


OTP
Modérateur
Modérateur
 
Messages: 19532
Inscription: 16 Déc 2005

Message le Lun Juil 07, 2008 12:42

Visiblement, je vais devoir faire en dynamique les futures URL de cette thématique, et réécrire les anciennes à la main (quitte à virer les moins parcourues).


Mumuri
WRInaute passionné
WRInaute passionné
 
Messages: 1800
Inscription: 3 Nov 2004

Message le Lun Juil 07, 2008 12:44

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
Modérateur
 
Messages: 11898
Inscription: 5 Juin 2006

Message le Lun Juil 07, 2008 12:45

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

Réécrire des URL "a posteriori"

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

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