rewriting sous forme /categorie_cafetiere.html

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

demipoulpe
Nouveau WRInaute
 
Messages: 16
Inscription: Ven Juil 23, 2004 11:09

rewriting sous forme /categorie_cafetiere.html

Message le Ven Juil 23, 2004 11:14

Bonjour ,


j'aimerais savoir si il est possibe de passer d'une regle de type :

Code: Tout sélectionner
RewriteRule ^categorie_([1-9][0-9]*)\.html$  index.php?cPath=$1 [L]


en quelque chose du genre /categorie_cafetiere.html sachant bein sur qu'il existe dasn ma bdd une correspondance entre le numero cpath et le titre de la categorie .....
pour cela j'utilise

Code: Tout sélectionner
RewriteMap categories  txt:categories.txt
RewriteRule ^(.*)$ index.php?cPath=${categories:$1|0}


avec un fichier categories.txt situé dasn le dossier conf et qui contient :

aspirateur 1
televiseur 2
hifi 3

mais cela ne fonctionne aps et je tombe sur une 404 si je tape l url :

Code: Tout sélectionner
http://localhost/test/categorie3



une idee ?


Yo@nn
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Juin 30, 2004 18:14

Message le Ven Juil 23, 2004 12:31

Je sais pas comment faire exactement ce que tu veut mais sinon tu peut essayer qqchose dans ce genre :

Code: Tout sélectionner
RewriteRule ^categorie([0-9])_([a-z]+)\.html$ index.php?cPath=$1 [L]


Ca te ferait des liens du style categorie9_cafetiere.html

Tout en sachant que le mot après _ ne sert a rien mais tu peut facilement le récupérer dans ta base de donnée en fonction de l'id de la catégorie :)

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Ven Juil 23, 2004 13:37

Si on parle bien d'un fichier de conf, probablement un problème de chemins par rapport au DocumentRoot

Code: Tout sélectionner
RewriteRule ^/test/(.*)$ /index.php?cPath=${categories:$1|0}

en supposant qu'index.php se trouve à la racine.

demipoulpe
Nouveau WRInaute
 
Messages: 16
Inscription: Ven Juil 23, 2004 11:09

Message le Ven Juil 23, 2004 13:57

je pense aussi que c'est un proeleme de chemin ..... j'ai aussi ctrl+c le fichier categorie dans mon repertoire test

Code: Tout sélectionner
RewriteMap categories  txt:/test/categories.txt
RewriteRule ^/test/(.*)$ /test/index.php?cPath=${categories:$1|tutu}


mais j obtient tjs une 404 ......
voici l'article original dou je tire mon code :*

For Advanced Users

I mentioned user-friendliness in the introduction, and haven't dealt with it. First, let's imagine we're having a huge download site that has the downloadable software separated into categories, each with a unique id (which is used in the SQL SELECTs). We use links like open.php?categoryid=23487678 to display the contents of a category.

To ensure that our URLs were easily memorized (eg. http://www.downloadsite.com/Nettools/Messengers) we could use:

RewriteRule ^/NetTools$ /test.php?target=3
RewriteRule ^/NetTools/Messengers$ /test.php?target=34

assuming the ID is 3 for the NetTools category and 34 for Messengers subcategory.

But our site is huge, as I've mentioned - who wants to hunt down all the IDs from the database, and then edit the config file by hand? No-one! Instead, we can use the mapping feature of mod_rewrite. Map allows us to provide a replacement-table - stored in a single text file -- within a hash file (for fast lookups), or even served through an external program!

For better performance I'd generate a single text file using PHP, which contains the following:

NetTools 3
NetTools/Messengers 34
.
.
.
and so on.

The httpd.conf file would contain:

RewriteMap categories txt:/path/to/file/categoryids.txt
RewriteRule ^(.*)$ open.php?categoryid=${categories:$1|0}

These lines tell mod_rewrite to read the categoryids.txt file upon Apache startup, and provide the ID for the URL for open.php. The |0 means that categoryid will be 0 if there's no matching key in the textfile.

You can also choose to serve the IDs on-the-fly via a script or other executable code. The program is started by Apache on server startup, and runs until shutdown. The program must have buffered I/O disabled, read from the stdin, and write results to stdout -- it's that simple!

With RewriteMap you can do a lot more, including:

* load balancing through servers (using rnd:),
* creation of a Webcluster that has an homogenous URL layout,
* redirection to mirror sites without modifying your Web application,
* denial of user access based on a hostlist,

and so on.

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Ven Juil 23, 2004 14:16

Indique le chemin complet pour le fichier de RewriteMap, par exemple /home/www/test/categories.txt ou c:/apache/www/test/categories.txt sur Windows, ca simplifiera le problème. Là, en l'état, ca pointe vers un fichier /test/categories.txt à la racine du système. Les logs d'Apache devraient te donner les erreurs éventuelles sur le repérage du fichier, après redémarrage bien entendu.

Ensuite, pour éviter les 404, quelque chose comme ca :
Code: Tout sélectionner
RewriteCond ${categories:$1|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/test/(.*)$ /test/index.php?cPath=${categories:$1} [L]

RewriteRule ^/test/(.*)$ /test/index.php [L]
Dernière édition par nikoshr le Ven Juil 23, 2004 14:17, édité 1 fois.


Yo@nn
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Juin 30, 2004 18:14

Message le Ven Juil 23, 2004 14:17

Merci pour l'article, je connaissais pas cette méthode :)

Sinon pour le chemin à indiquer, peut-être qu'il faut donner le chemin depuis le /home/site/www etc. ?
pour moi c'est par exemple le cas pour les fichiers de password (AuthUserFile)

demipoulpe
Nouveau WRInaute
 
Messages: 16
Inscription: Ven Juil 23, 2004 11:09

Message le Ven Juil 23, 2004 14:27

rhaaaaaaaaaa ca me rend folle , tjs une belle 404 avec

Code: Tout sélectionner
RewriteMap categories  txt:/home/www/test/categories.txt
RewriteRule ^/test/(.*)$ /test/index.php?cPath=${categories:$1|tutu}


par contre la structure du fichier categorie.txt m intrigue ... pas besoin de delimiteur ???

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Ven Juil 23, 2004 14:52

Apache ne dit rien quand tu le redémarres? Rien dans les logs?

Pour voir ce qu'il se passe, tu peux activer le log du rewriting
Code: Tout sélectionner
RewriteEngine On
RewriteLogLevel 9
RewriteLog      /home/www/test/rewrite.log


Les maps par fichiers texte sont sous forme de paires clé valeur, une par ligne.

Pour info, la doc du RewriteMap

demipoulpe
Nouveau WRInaute
 
Messages: 16
Inscription: Ven Juil 23, 2004 11:09

Message le Ven Juil 23, 2004 15:01

un simple

[Fri Jul 23 15:46:57 2004] [error] [client 127.0.0.1] File does not exist: c:/program files/easyphp1-7/www/test/hifi

peu parlant

vous le dites si vous en avez marre :wink:

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Ven Juil 23, 2004 15:16

Ah. Le problème vient assez certainement du fait que les chemins utilisés jusque là sont des chemins Unix alors qu'apparemment tu es sur Windows.

Reprenons. Normalement, avec quelque chose comme ca dans ton fichier de conf, ca devrait fonctionner, plus ou moins :
Code: Tout sélectionner
RewriteEngine On
RewriteMap categories  txt:c:/program files/easyphp1-7/www/test/categories.txt
RewriteRule ^/test/(.*)$ /test/index.php?cPath=${categories:$1|tutu}


Redémarrage d'Apache, test, joie dans les coeurs?

demipoulpe
Nouveau WRInaute
 
Messages: 16
Inscription: Ven Juil 23, 2004 11:09

Message le Ven Juil 23, 2004 15:19

pas tout a fait ..... il n'appreci pas la syntaxe

Code: Tout sélectionner
c:/program files/easyphp1-7/www/test/categories.txt
Dernière édition par demipoulpe le Ven Juil 23, 2004 15:26, édité 1 fois.


Yo@nn
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Juin 30, 2004 18:14

Message le Ven Juil 23, 2004 15:21

c:/progra~1/easyph~1/www/test/catego~1.txt ?

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Ven Juil 23, 2004 15:35

Alors
Code: Tout sélectionner
RewriteMap categories  txt:"c:/program files/easyphp1-7/www/test/categories.txt"

demipoulpe
Nouveau WRInaute
 
Messages: 16
Inscription: Ven Juil 23, 2004 11:09

Message le Lun Juil 26, 2004 14:36

un week end et un litre de café ne mon pas sortie de cet inextricable probleme :roll:

quelqun a t il deja utilisé avec succes les RewriteMap :?:

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Lun Juil 26, 2004 16:48

Oui. De façon intensive sur certains sites.

rewriting sous forme /categorie_cafetiere.html

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 0 invités