besoin d'aide pour un nouveau merci !

Nouveau WRInaute
voila pour commencer lol éléve en informatique je suis actuellement en stage en entreprise ou l'on ma demander de me mettre à l'url rewritting et donc aux expression regulière sur un site que je n'ai pas codé.

je vais donc malgres mes moyens essayer d'etre clair !

pour commencer voila le code php que je posséde enfin une partie il permet de gerer de manière dynamique les url (je précise c'est pour un portail sur la coiffure)

voila le code initial :


Code:
<A HREF="?departement=<?=$sql->row["id_departement"];?>-<?=$sql->row["id_departement"];?>.html" TITLE=" Salons de coiffure  <?=$sql->row["societe"];?>"><span class='pref'>coiffeur</span> <?=$sql->row["departement"], ' (',$sql->row["code"], ')';?></A><BR />

je l'ai par la suite modifier ( un peu a taton) afin de pouvoir gerer l'url rewritting ce qui nous donne :

Code:
<A HREF="<?=$sql->row["region"];?>/<?=$sql->row["departement"];?>-<?=$sql->row["id_departement"];?>.html" TITLE=" Salons de coiffure  <?=$sql->row["departement"];?>"><span class='pref'>coiffeur</span> <?=$sql->row["departement"], ' (',$sql->row["code"], ')';?></A><BR />

et enfin pour terminer voici mon .htaccess


Code:
Options +FollowSymlinks

#Activation du module
RewriteEngine on

#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

RewriteRule ^departement\.html$ http://localhost/ANNUAIRE/index.php?region=0 [L] 
RewriteRule ^regions\.html$ http://localhost/ANNUAIRE/index.php [L]

#--------------------------------------------------
# Règles de réécriture d'URL : régions
#--------------------------------------------------


RewriteRule ^([a-z]+-|[a-z]+-|[a-z]+)/([a-z]+-|[a-z]+-|[a-z]+)-([0-9]+)\.html$ http://localhost/ANNUAIRE/index.php?departement=$3 [R,NC,L]

RewriteRule ^[a-z]+-|[a-z]+-|[a-z]+-|[a-z]+\.html$ http://localhost/ANNUAIRE/index.php?region=8 [R,L,NC]
#RewriteRule ^[.]+-|[.]+-|[.]+-|[.]+\.html$ http://localhost/ANNUAIRE/index.php?region=8 [R,L,NC]

mon soucis est que la prise en compte des tiret n'est pas toujour effectuée malgres mes expression qui me semble correcte.

de plus mon tuteur desire ne voir aucun chiffre dans l'url chose que je ne voit pas comment réaliser je n'en ai donc pas tenu compte pour l'instant.

la redirection est effectuée vers des pages fixes pour le moment mais je souhaiterais avoir des variable de manière a avoir le minimum de regles et non une regle par rediredtion.

enfn à partir d'un certain stade de mon arboressance si j'enleve le [R] de la regle la redirection n'est plus effectuée..

j'espere avoir été clair si ce n'est pas le cas j'attend vos remarques et vos question avec impatience.

merci beaucoup
 
WRInaute accro
je trouve pas ta règle folichone folichone :)

j'aurai plus vu quelquechose du genre :

departement,$id_dept,$nom_dept.html
region,$id_region,$nom_region.html

pourquoi s'embeter avec tant de "-". si tu veux de l'opitimisé, il faut une URL courte. et facile à gerer (la clé en premier)

si ton tuteur n'aime pas, dis lui de bosser un ptit peu plus les ré-écritures d'ULR ;) c'est généralement toujorus comme ca "nom de la rubrique", "clé pour trouver l'enregistrement", "1 ou 2 mots clés pour l'optimisation de l'url en vue de BL"
 
Nouveau WRInaute
en fait j'utilise les tirets - car dansla base de donnée les noms des départements et des region ne sont pas en un seul mot :

exemple: Ile-de-France

j'ai donc utilisé la régle suivante afin de "lire" les mots tel que "ile" puis je repére le tiré puis "de" ect.. mais cela fonctionne parfaitement dans la premièrepartie cad lorsque le client clique sur une région mais pour un département ou j'utilise la régle:

Code:
RewriteRule ^([a-z]+-|[a-z]+-|[a-z]+)/([a-z]+-|[a-z]+-|[a-z]+)-([0-9]+)\.html$ http://localhost/ANNUAIRE/index.php?departement=$3 [R,NC,L]

cela ne fonctionne pas !

de plus comme précisé au dessus si j'enléve le flag R le lien n'est plus effectué savez-vous pourquoi?

deplus sont but et de ne voir aucun chiffre dans l'url ... je sais ce n'est pas courant mais sa existe et comment le mettre en place
 
WRInaute accro
1° Le [R] force la redirection. Il sert surtout a debeuger. A enlever des que ca marche.
2° Pour faire ile-de-france, (.*) suffit :D
3° Tu as bien fait 3 captures mais tu n'en passe qu'une dans l'url du script:
?departement=$3.
Ca peut pas bien marcher :D


Si tu veux qu'on t'aide, donne nous les 2 urls, avant et apres redirection
 
WRInaute accro
tu n'a pas besoin de te soucier des tirets dans ma regle.

cas simple :

departemant,94,Val-de-Marne.html

la ré-écriture suivante :
rewrite departemant,([0-9]+),(.+).html$ /index.php?numero_departemant=$1
est toute simple et te permet de gérer tout tes pseudos cas d'erreurs que tu pense gérer en fonction des tirets ou autre dans tes départements
lea régle est simple, ce qu'il y a entre les virgules est le numéro du departements, et tout ce qu'il y a après, on s'en fiche. tu peux avoir departement,14,saint-glinglin_les!waza:toctoc-gluops.html, cette règle unique fonctionnera. toi tu pars t embeter à mettre le nom avant et à gerer si il y a un tiret, ou deux, ou plus, tu n'a pas besoin de partir la dedans

cas compliqué
tu veux absolument sortir de numéro de departement de l'url

tu te compliques un peu la vie, tu va devoir utiliser cette regle :
rewrite departemant,(.+).html$ /index.php?nom_departemant=$1
qui dans le cas d'une url comme cela :
departemant,Val-de-Marne.html
recuperera val-de-marne dans $_GET['nom_departement'] (tu vois, là aussi pas besoin de s'ennuyer avec la gestion des multiples tirets, une seule variable recupère le nom) mais apres à toi d avoir une table de correspondance entre le nom et le numéro du dept pour recuperer les champs de la BDD associés (car je suppose que la dedans, c est l'id du dept qui est enregistrée, pas le nom)

ps : pas besoin de me demander en MP de répondre à ton message, ne t'inquietes pas, qd je me connectes, je le vois ! :)
 
Nouveau WRInaute
merci beaucup pour votre aide je vais tenter de mettre en place tt sa des maintenant


encore un pti souci (rires)

Code:
<A HREF="<?=$sql->row["region"];?>/<?=$sql->row["departement"];?>-<?=$sql->row["id_departement"];?>.html" TITLE=" Salons de coiffure  <?=$sql->row["departement"];?>"><span class='pref'>coiffeur</span> <?=$sql->row["departement"], ' (',$sql->row["code"], ')';?></A><BR />

comme précisé au dessu j'ai modifié le code php afin que l'url soit du genre : region / departement-id_département.html

mais au final cela doit devenir simplement region / departement.html

j'ai bien tenu compte de ton message précedent mais dans mon cas la redirection été avant effectuer grace à l'id du département ainsi lui passer le nom du departement me donne une erreur 404.


ps: merci vous déchirez tout sur ce forum
 
Nouveau WRInaute
mdr aïe sa va douiller !!! (ps: je vient juste de capter l'avatar linux seyar mdr kiffant !!! tt simplement chevalier du zodiac powaaaaaaa!!)
 
WRInaute accro
region / departement-id_département.html

Code:
<A HREF="<?=$sql->row["region"];?>/<?=$sql->row["departement"];?>-<?=$sql->row["id_departement"];?>.html">

region/departement.html

Code:
<A HREF="<?=$sql->row["region"];?>/<?=$sql->row["departement"];?>.html">

donc sur ta page tu n'auras plus l'id du departemant, mais pour le retrouver, ci cela est neccessaire au fonctionnement de ton code, comme tu as fait passer le nom, avec une simple requete tu retrouves l'ID
SELECT id FROM matable WHERE departement='$departement';

Je ne sais comment tu geres la region alors j'ai mis physiquement les repertoire

Code:
RewriteRule region/(.*).html$ /region/index.php?nom_departemant=$1
 
Nouveau WRInaute
merci ,mais j'ai du mal m'exprimer car comme tu as pu le voir au dessu j'arrive bien a faire

region / departement-id_département.html

region/departement.html

je c de plus faire la reque sql basique que tu m'a proposer mais je ne voit pas comment integrer le resultat de ma resuete au sein du <href> qui comprend les "row"

de plus ma bd et comme sa (ce n'est qu'une partie evidemment):

ce qui n'aide pas car je ne doit pas la modifier !!! simpa non
 
Nouveau WRInaute
je vous rappelle le code de mes row:

Code:
<A HREF="<?=$sql->row["region"];?>/<?=$sql->row["departement"];?>.html" TITLE=" Salons de coiffure  <?=$sql->row["departement"];?>"><span class='pref'>coiffeur</span> <?=$sql->row["departement"], ' (',$sql->row["code"], ')';?></A><BR />
 
WRInaute accro
il est ou ton probleme maintenant ? tu cherche à construire le lien qui sera ré-écrit par quelle règle ?
 
Nouveau WRInaute
je cherche a réecrire le lien de cette regle:

region/departement.html

car comme je vous l'ai dis je ne doit pas avoir de chiffre dans l'url mais apres avoir réaliser la requete que je vais devoir adapter vu ma bd comment en inserer le resultat de la requete la dedand:

Code:
<A HREF="<?=$sql->row["region"];?>/<?=$sql->row["departement"];?>.html" TITLE=" Salons de coiffure  <?=$sql->row["departement"];?>"><span class='pref'>coiffeur</span> <?=$sql->row["departement"], ' (',$sql->row["code"], ')';?></A><BR />

ps: merci j'ai un peux de mal a pigé lol
 
Nouveau WRInaute
J'ai reussi a résoudre mon probléme en fait un pot a moi ma bcp aider merci à Eliakoh qui est un pro du php !!!!

mon dernier souci est :

mes regles sont prises en comptes et effectue la redirection cad si je tape dans mon navigateur:

http://monIP/ANNUAIRE/index.php/Alsace/Haut-Rhin.html

la redirection part vers la bonne page mais (malgrés avoir avoir enlever le flag [R]) l'url du navigateur ce modifie toute seule pour m'afficher

http://monIP/ANNUAIRE/index.php?departement=Haut-Rhin

comment sela ce fait il ? et comment résoudre cela si vous en avez une idée merci
 
Discussions similaires
Haut