Mon url rewriting ne fonctionne pas, besoin d'un coup de main...

Nouveau WRInaute
Bonsoir à tous,
Je souhaite transformer l'url suivante
products_listby.php?manu_id=103
en
natursutten-p.php

J'ai donc travaillé sur l'url rewriting suivante
Code:
RewriteRule ^natursutten-p.php$ products_listby.php?manu_id=103 [QSA,L,NC]
Mais cela ne fonctionne pas, quand je clique sur le lien natursutten-p.php, j'obtiens une erreur
The requested URL /test/catalog/natursutten-p.php was not found on this server.

Quelqu'un a une idée des erreurs que j'ai pu faire ou des autres problèmes possibles?

Merci d'avance,

Cordialement
Laurent
 
WRInaute passionné
c'est quoi ce répertoire /test/catalog/
peux tu préciser ou se trouve les fichiers htaccess et products_listby.php par rapport à la racine du site?
 
Nouveau WRInaute
test/catalog est la racine de ma boutique où se trouvent à la fois le .htaccess et products_listby.php
Cordialement
Laurent
 
WRInaute passionné
j'écrirais sous cette forme mais ca ne changera surement rien :
Code:
RewriteEngine On
RewriteRule ^natursutten-p\.php$ /products_listby.php?manu_id=103 [QSA,L,NC]
Pour voir si la réécriture est appliquée tu peux ajouter le flag R => [QSA,L,NC,R]
Si tu es redirigé, tu vas voir la page que le serveur cherche.
 
Nouveau WRInaute
Bonjour,
Pour ma part, comme je m'intéresse depuis peu à la réécriture d'adresse, j'ai du mal à utiliser RewriteRule sans RewriteCond.
Code:
RewriteCond %{QUERY_STRING} ^manu_id=103$
RewriteCond %{REQUEST_URI} ^/products_listby\.php$
RewriteRule ^(.*) http://www.monsite.com/natursutten-p.php [QSA,L,R]
La première condition dit que la réécriture ne sapplique qu'aux pages contenant exactement manu_id=103 après ? et la deuxième qu'au fichier products_listby.php. Selon ton cas tu dois pouvoir en enlever une des deux ou mettre en premier le cas le moins fréquent. A noter qu'il faut échapper certains . avec \ car sinon il veut dire n'importe quel caractère mais je ne crois pas que c'est nécessaire dans l'adresse réécrite.

Certains te diront peut être que c'est beaucoup de conditions pour rien, mais ça devrait fonctionner...

[EDIT] Je serais tenté de dire que la règle proposée devrait fonctionner... Avec un / en plus peut être :
Code:
RewriteRule ^/natursutten-p\.php$ /products_listby.php?manu_id=103 [QSA]
Avec [QSA] tu devrais toujours avoir accès à la variable manu_id.
Si ton domaine ne pointe pas vers ton répertoire /test/catalog peut être faut il l'ajouter dans la règle ??? D'où la question de forty... soit un truc du genre (à vérifier).
Code:
RewriteRule ^/test/catalog/natursutten-p\.php$ /test/catalog/products_listby.php?manu_id=103 [QSA]
Car la racine de ta boutique n'est peut être pas la racine de ton site... Avoir un unique htaccess à la racine du site me semble mieux.
 
Nouveau WRInaute
Bonjour,
J'ai bien essayé ta solution mais j'obtiens l'erreur suivante :
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, postmaster@www.kidybio.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Vraiment je ne saisis pas pourquoi, cela ne fonctionne pas...

Laurent
 
Nouveau WRInaute
Ce message apparait généralement lorsqu'il y a des erreurs de syntaxe.
Excuse moi pour ma première proposition mais c'est le contraire que tu veux faire :oops: On appelle le fichier "natursutten-p.php" et on affiche "products_listby.php?manu_id=103". C'est bien ça !?!
Je suis allé voir ton site et apparement ton "catalog" n'est pas destiné à être à la racine de ton site... Donc attention au chemin des fichiers. Pour s'en affranchir, je mettrai le htaccess à la racine du site et j'y mettrai une des règles suivantes, sachant que ^blabla$ veut dire contenant strictement blabla et blabla$ veut dire finissant par blabla :
Code:
RewriteRule ^/test/catalog/natursutten-p\.php$ /test/catalog/products_listby.php?manu_id=103 [QSA,L,NC]
RewriteRule natursutten-p\.php$ /test/catalog/products_listby.php?manu_id=103 [QSA,L,NC]
Si ça ne t'aide pas... après c'est au delà de mes compétences.
 
Nouveau WRInaute
Bonsoir,

Voilà, j'ai un peu travailler la question mais je n'arrive pas à finaliser mon url rewriting...

La première étape a été de transformer

products_listby.php?manu_id=103
en
products_listby.php?manu_name=natursutten

dans la page product_listby.php

Ensuite revient notre url rewriting

J'ai donc codé la "chose" suivante, c'est là que cela ne marche pas, et que je suis preneur de toutes vos idées...

Code:
RewriteCond %{QUERY_STRING} ^manu_name=([^&]*)$

RewriteRule ^products_listby\.php$ /boutique/catalog/%1-p.php? [R=301,L]

RewriteRule ^([A-Za-z0-9_-]+)-p\.php$ /boutique/catalog/products_listby.php?manu_name=$1&rewriting [L]

Merci d'avance
@+
Laurent
 
Discussions similaires
Haut