Messages: 22

Enregistré le: 22 Fév 2008

Message le Sam Déc 19, 2009 1:24

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

J'ai donc travaillé sur l'url rewriting suivante
Code: Tout sélectionner
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
Haut
7 Réponses
Messages: 2172

Enregistré le: 30 Oct 2008

Message le Sam Déc 19, 2009 16:27

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?
Haut
Messages: 22

Enregistré le: 22 Fév 2008

Message le Sam Déc 19, 2009 18:27

test/catalog est la racine de ma boutique où se trouvent à la fois le .htaccess et products_listby.php
Cordialement
Laurent
Haut
Messages: 2172

Enregistré le: 30 Oct 2008

Message le Sam Déc 19, 2009 21:40

j'écrirais sous cette forme mais ca ne changera surement rien :
Code: Tout sélectionner
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.
Haut
Messages: 4

Enregistré le: 19 Déc 2009

Message le Dim Déc 20, 2009 14:35

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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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.
Haut
Messages: 22

Enregistré le: 22 Fév 2008

Message le Dim Déc 20, 2009 17:43

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
Haut
Messages: 4

Enregistré le: 19 Déc 2009

Message le Dim Déc 20, 2009 19:33

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: Tout sélectionner
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.
Haut
Messages: 22

Enregistré le: 22 Fév 2008

Message le Sam Déc 26, 2009 1:49

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

[url]products_listby.php?manu_id=103[/url]
en
[url]products_listby.php?manu_name=natursutten[/url]

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: Tout sélectionner
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
Haut