Problème URL Rewriting complexe avec les dossiers rééls et les autres chemins [Résolu]

alifarah7

Nouveau WRInaute
Bonjour les webrankinautes :)

Après des recherches dans plusieurs forums et tutoriels je n'ai trouvé que votre forum pour m'aider à résoudre mon problème qui me bloque depuis plus que 3 jours...

Voilà, pour vous mettre dans le contexte, j'ai un site e-commerce dans lequel on peux acheter des produits que j'importe depuis le feed du fournisseur de mon client...j'utilise un cronjob pour mettre à jour ma base de données dans laquelle je stocke mes produits chaque jour...

mes chemins sont les suivants :

chemins rééls, Dossiers rééls (les categories sont 10 + ils ne changeront jamais) :
http://www.monsite.com/categorie1/
http://www.monsite.com/categorie2/
http://www.monsite.com/categorie3/
....

chemins de produits :

les liens de tout les produits :
http://www.monsite.com/categorie/produit1-separateur1/
Régle appropriée : RewriteRule categorie/(.*)-separateur1/$ produits.php?produit=$1&Category=categorie [L]

les liens d'une categorie spéciale => qui amène à une autre page avec une autre disposition (pour des raisons de referncement + c'est le choix du responsable du référencement de mon client) :
http://www.monsite.com/produit1/
Régle appropriée : RewriteRule ([^/]+)/$ produits2.php?produit=$1&Category=categoryspeciale [L]
http://www.monsite.com/produit1-separateur2-location/
Régle appropriée : RewriteRule ([^/]+)/([^/]+)-separateur2-([^/]+)/$ produits2.php?produit=$1&Location=$3&Category=categoryspeciale [L]

mon fichier htaccess :
Code:
AddType application/x-httpd-php5 php
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
Options +FollowSymLinks
RewriteEngine on

RewriteRule categorie/(.*)-separateur1/$ produits.php?produit=$1&Category=categorie [L]
RewriteRule ([^/]+)/$ produits2.php?produit=$1&Category=categoryspeciale [L]
RewriteRule ([^/]+)/([^/]+)-separateur2-([^/]+)/$ produits2.php?produit=$1&Location=$3&Category=categoryspeciale [L]


avec cet htaccess il y a une confusion entre mes dossiers rééls : http://www.monsite.com/categorie1/ et la page de produits de ma categorie speciale : http://www.monsite.com/produit1/

je ne trouve pas comment dire à htaccess d'appliquer la régle : RewriteRule ([^/]+)/$ produits2.php?produit=$1&Category=categoryspeciale [L] dans tous les cas sauf dans les chemins statiques suivants et qui ne sont pas nombreux : http://www.monsite.com/categorie1/ , http://www.monsite.com/categorie2/ , http://www.monsite.com/categorie3/ ....

Je pense que je suis clair là, sinon je suis disponible pour plus d'éclaircissements :)

Merci d'avance pour vos suggestions et conseils...c là ar je commence a perdre l'espoir, ça fait 3 jours que je ne peux pas avancer et j'ai un délai à respecter avec mon client :roll: :|
 

fabor

WRInaute discret
Re: Problème URL Rewriting complexe avec les dossiers rééls et les autres chemins

je ne suis pas sur d'avoir tout compris mais essayes déjà d'intervertir tes 2 dernières lignes car la dernière est plus spécifique et est incluse dans l'avant dernière
 

alifarah7

Nouveau WRInaute
Re: Problème URL Rewriting complexe avec les dossiers rééls et les autres chemins

Merci fabor quand même pour ta réponse :)
mais j'ai trouvé la solution :

je ne trouve pas comment dire à htaccess d'appliquer la régle : RewriteRule ([^/]+)/$ produits2.php?produit=$1&Category=categoryspeciale [L] dans tous les cas sauf dans les chemins statiques suivants et qui ne sont pas nombreux : http://www.monsite.com/categorie1/ , http://www.monsite.com/categorie2/ , http://www.monsite.com/categorie3/ ....
=
ajouter la ligne : RewriteCond %{REQUEST_FILENAME} !-d

mon code devient :
Code:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([^/]+)/$ produits2.php?produit=$1&Category=categoryspeciale [L]

Dans un autre sens, htaccess NE respecte PAS ma condition QUE quand ce n'est pas une adresse physique ce qui est le cas dans l'adresse : http://www.monsite.com/categorie2/

Reste à signaler aussi que après des tests j'ai trouvé qu'il faut aussi mettre la dite ligne de condition + regle à la fin de mon htaccess :
Code:
AddType application/x-httpd-php5 php
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
Options +FollowSymLinks
RewriteEngine on

RewriteRule categorie/(.*)-separateur1/$ produits.php?produit=$1&Category=categorie [L]
RewriteRule ([^/]+)/([^/]+)-separateur2-([^/]+)/$ produits2.php?produit=$1&Location=$3&Category=categoryspeciale [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([^/]+)/$ produits2.php?produit=$1&Category=categoryspeciale [L]

MERCI A VOUS TOUS...Je suis content youpiiiiiiiii :D
 

Discussions similaires

Haut