Conditions et logique dans un fichier htaccess "dynamiq

WRInaute discret
Bonjour,

Ma question comme je suis relativement débutant avec les htaccess, est de savoir si comme pour des langages Perl ou PHP, on peut y placer des conditions et tests logiques ?
Dans mon cas de figure, je souhaiterais proposer aux visiteurs deux manières de lister des références d'une société, par type de service rendu ou par secteur d'activité du client. Ce sont les mêmes fiches références qui sont appelées mais leur ordre dépend de la manière dont la page est appelée, et donc de son URL :
En ex1 on aura references-diagnostic-lot.html ce que le htaccess mettra en references.php?service=diagnostic&dpt=lot
En 2 on aura references-culture-tarn.html ce que le htaccess devrait mettre en references.php?secteur=culture&dpt=tarn

Ces deux pages commencent par references ce qui sert à appeler la page-modèle references.php mais je me demandais si ensuite je dois mettre "en dur" dans mon fichier htaccess tous les mots-clefs pour que le site sache que si le 2eme mot-clef de l'URL est diagnostic alors ca doit devenir references.php?service=diagnostic mais que s'il s'agit de "culture" ou "tourisme" alors ca va etre "references.php?secteur="
Cela risque de donner un fichier lourd et à changer éventuellement...A voir d'ailleurs comment l'écrire car je ne le vois pas...
Ou alors au mieux, serait-il par exemple possible de déclarer dans un fichier htaccess un tableau de mots-clefs, et de faire en sorte donc que si le 2ème terme de mon URL est dedans alors le lien devient ceci, sinon cela...

J'espère être assez clair, j'imagine que ce cas doit concerner pas mal de monde qui veut faire des URL optimisés ?

merci à tous.
 
WRInaute passionné
Le mieux c'est de changer le nom de la page reference (qui ne sert à rien pour le référencement du reste) et de mettre un autre terme ("service" ou "secteur").

un truc comme ceci peut être :

RewriteRule ^(*.)-(.*)-(.*).html$ reference.php?$1=$2&dpt=$3


Du coup tu aurais des pages écrites comme ceci :

service-diagnostic-lot.html
secteur-culture-tarn.html

etc...

Une seule ligne sur le htaccess. (Par contre les (.*) sont à éviter mieux vaut des expressions plus "étroites" comme ([::alphanum::]) ).

J'espère que je suis assez clair.


@+
 
WRInaute discret
Merci de la réponse,
J'ai quand même l'impression que ce premier mot-clef que j'utilise aussi pour déterminer la page PHP sert quand même en référencement puisque certaines pages seront donc appelées references-diagnostic-lot.html et d'autres dans une autre partie services-diagnostic-etudes.html par exemple, donc cela parle du sujet de la page ?

Le principe de rewrite que tu soulignes m'a l'air parfait mais seulement dans le cas d'une partie du site, ici il n'y a donc pas QUE des pages décrivant les références : partie Services, partie Contact, etc.

Ce qu'il me faudrait reviendrait donc à une sorte de htaccess dynamique qui ferait

Si le terme de l'URL dépend de la partie Références, alors
RewriteRule ^(*.)-(.*)-(.*).html$ references.php?$1=$2&dpt=$3

Si le terme de l'URL dépend de la partie Services, alors
RewriteRule ^(*.)-(.*)-(.*).html$ services.php?$1=$2&dpt=$3

etc. J'avais construit les URLs de manière à ce que ce premier terme serve un peu en référencement et aussi en technique pour appeler le template pertinent...je suis ouvert à toute critique ! ;)
 
WRInaute passionné
Si le terme de l'URL dépend de la partie Références, alors
RewriteRule ^(*.)-(.*)-(.*).html$ references.php?$1=$2&dpt=$3

Si le terme de l'URL dépend de la partie Services, alors
RewriteRule ^(*.)-(.*)-(.*).html$ services.php?$1=$2&dpt=$3

Ce n'est plus le même cas que cité précédemment :
En ex1 on aura references-diagnostic-lot.html ce que le htaccess mettra en references.php?service=diagnostic&dpt=lot
En 2 on aura references-culture-tarn.html ce que le htaccess devrait mettre en references.php?secteur=culture&dpt=tarn

De toute facon dans ton fichier html généré l'url sera marquée en dur
references-culture-tarn.html.

Il faudrait donc tester dans ton fichier PHP, les mots clés passés en paramêtres ici si $2== culture alors on affiche la page culture du dpt $3 (tarn).

J'ai l'impression que ton problème vient du nom de tes variables PHP et non de l'url Rewriting... :/

service=diagnostic
secteur=xxx...
 
WRInaute discret
C'est peut être mon explication qui aurait pu être plus détaillée mais je ne voulais pas compliquer. En fait on est bien dans le même cas, le site fonctionne en plusieurs parties, et dans l'une d'entre elles, Références, on peut choisir le mode d'affichage, par service rendu ou par secteur d'activité. Les liens seront bien en dur mais il y aura deux menus de liens "en dur" différents pour cette section selon l'affichage choisi, le 1er comportant des liens HTML qui se transforment en references.php?service=... et le 2nd qui les modifie en references.php?secteur=...

Dans la page PHP il y aura bien un test sur les termes composant l'URL, ma question était de savoir si je pouvais dans l'htaccess faire des tests logiques pour savoir comment réécrire les URL car sinon cela oblige à mettre en dur dans ce fichier des termes exacts pour toutes les langues, alors que tout le site est dynamique et que ces mots-clefs peuvent changer.

La question reste en fait aussi le choix des URL à écrire, et je ne sais pas si mes choix sont les bons : je pourrais aussi avoir site/fr/references/culture-tarn.html et en analysant que le nom de page commence par culture, savoir que l'affichage est par secteur de client, mais pas facile de choisir le type d'URL qui sera le mieux pour Google.
Merci de l'aide en tous cas !
 
WRInaute passionné
et que ces mots-clefs peuvent changer.

Attention au duplicate content... ca va te faire faire des redirections 301 de partout c'est assez dangerous.

Le choix de l'URL est bon pour ma part.

culture-tarn.html et en analysant que le nom de page commence par culture, savoir que l'affichage est par secteur de client

Dans le htaccess
Code:
RewriteRule ^references/(.*)-(.*).html$	 references.php?$1=$2 [NC,L]

Du coup dans ton php tu peux tester
Code:
if (isset($_GET['culture']))
{//affichage service rendu}
else
{//affichage secteur activité}

Voila voila
 
Discussions similaires
Haut