Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2011, 13h02   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Par défaut Rewrite rules avec nombreux paramètres

Bonjour

je voudrais mettre en place des rewrite rules sur mon nouveau site.
Le problème c'est que je peux avoir 5 paramètres mes URLs, et tous sont optionels

Du coup la plus longue URL est de la forme
/?id_ville=1&id_cat=10&filter_price=1&filter_site=1&sort=desc
Je veux la transformer en /ville/1/cat/10/filter_price/1/filter_site/1/sort/desc

Mais je peux très bien avoir juste
/?id_ville=1

Ou bien
/?id_ville=1&filter_site=1

Mon problème c'est que j'essaie de mettre manuellement dans le fichier htaccess toutes les possiblités, mais ca en fait beaucoup trop ! Du coup je pete un cable

Comment créer une rewrite rule générique et qui prenne tous les cas de figure en compte ?

Merci de votre réponse
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 21h19   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
A un détail près, tu auras ce que tu demandes ici.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 13h34   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Salut

et merci pour ton aide

J'ai mis
Code :
1
2
RewriteRule ^(-.+)-([^-]+)-([^-&]*)([^-]*) home.php?$1&$2=$3$4 [N]
RewriteRule ^([^-]+)-([^-]*)(.*) home.php?$1=$2$3 [L]
Mais ca ne répond pas trop à mon besoin
En effet cette URL fonctionne /id_ville-1/
Mais cette URL ne fonctionne pas /id_ville-1/id_cat-45/

Par ailleurs, je voudrais plutot avoir des urls du type
/paris-1/sante-45/

Désolé, je capte rien au regex....

Merci par avance de ton aide
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 22h00   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Citation:
Envoyé par chuckichucki Voir le message
Par ailleurs, je voudrais plutot avoir des urls du type
/paris-1/sante-45/
Là, ça va pas être possible : comment Apache sait que "paris" est une ville est par "sante" ? Si tu restes sur le principe de la page que j'ai indiqué, pas de souci mais si tu veux des paramètres qui ont une signification particulière, il faut aider Apache à les identifier.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 11h09   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Okkkkk je comprends mieux !

Bon j'ai mis :

Code :
1
2
RewriteRule ^(.+)/([^/]+)-([^/]+)/?$ /home.php?$1?$2=$3 [QSA,L]
RewriteRule ^([^/]+)-([^/]+)$ /home.php?$1=$2 [QSA,L]
Mais quand je vais sur http://www.monsite.com/id_ville_sele...cat_selected-3 mais ca ne fonctionne pas, il reste sur la page d'accueil sans prendre en compte les parametres que je lui ai donné.

Par ailleurs, je voudrais tout de même avoir des URLs plus jolies et donc avoir un truc du genre

http://www.monsite.com/v-paris-1/c-s...treparametre-5

Sachant que "v" "c" "price" "autreparametre" seraient du contenu statique dans l'url, suivi de la valeur du paramètre. Tous ces paramètres sont optionnels.

Désolé je suis nul en rewriting, un petit peu d'aide serait la bienvenue

Merci
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 16h24   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
C'est pas si compliqué que ça, faut juste prendre en compte les séparateurs un par un et gérer le cas de base de la récurrence :
Code :
1
2
3
4
5
6
RewriteRule ^$ /home.php [QSA,L]
RewriteRule ^v-.+-([0-9]+)(.*)$ /$2?id_ville=$1 [QSA,L]
RewriteRule ^c-.+-([0-9]+)(.*)$ /$2?id_cat=$1 [QSA,L]
RewriteRule ^price-.+-([0-9]+)(.*)$ /$2?filter_price=$1 [QSA,L]
...
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 15h52   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Merci pour ton aide, mais hélas je ne m'en sors pas. J'ai mis :

Code :
1
2
3
4
5
6
RewriteRule ^$ /home.php [QSA,L]
RewriteRule ^v-.+-([0-9]+)(.*)$ /$2?id_ville=$1 [QSA,L]
RewriteRule ^c-.+-([0-9]+)(.*)$ /$2?id_cat=$1 [QSA,L]
RewriteRule ^price-.+-([0-9]+)(.*)$ /$2?filter_price=$1 [QSA,L]
RewriteRule ^tri-.+-([0-9]+)(.*)$ /$2?tri=$1 [QSA,L]
Cela fonctionne pour http://www.monsite.com/v-paris-1/

mais ne fonctionne pas pour http://www.monsite.com/v-paris-1/c-coiffure-8/

et encore moins pour
http://www.monsite.com/v-paris-1/c-c.../price-10-100/

Help, je suis perdu....

Par avance merci de ton aide
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 22h41   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
En effet, c'est mon .+ qui est trop large. Essaie plutôt ça :
Code :
1
2
3
4
5
RewriteRule ^$ /home.php [QSA,L]
RewriteRule ^v-[^-]+-([0-9]+)(.*)$ /$2?id_ville=$1 [QSA,L]
RewriteRule ^c-[^-]+-([0-9]+)(.*)$ /$2?id_cat=$1 [QSA,L]
RewriteRule ^price-[^-]+-([0-9]+)(.*)$ /$2?filter_price=$1 [QSA,L]
RewriteRule ^tri-[^-]+-([0-9]+)(.*)$ /$2?tri=$1 [QSA,L]
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 19h16   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Ca marche parfaitement ! Merci beaucoup de ton aide et bonne continuation
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h39.


 
 
 
 
Partenaires

Hébergement Web