Soucis avec mon url rewriting

WRInaute discret
Bonjour à tous,

voilà je vous écris car j'ai quelques petits soucis d'url rewriting. En fait, certaines pages fonctionnent et d'autres pas du tout et à vrai dire, je n'en comprend pas la raison.
Voici un exemple de page de base http://www.c-plus-c.com/scriptannu/mydi ... at-24.html

voici mon fichier .htaccess

RewriteBase /scriptannu/mydir_1_0_1/


RewriteRule ^(.*)-([0-9]*).html$ index.php?dir=$2
RewriteRule ^(.*)-([0-9]*)-ordre([0-9]*).html$ index.php?order=$3&dir=$2
RewriteRule ^(.*)-([0-9]*)-page([0-9]*).html$ index.php?dir=$2&start=$3
RewriteRule ^(.*)-([0-9]*)-page([0-9]*)-ordre([0-9]*).html$ index.php?order=$4&dir=$2&start=$3
RewriteRule ^(.*).html$ index.php?do=$1

Donc voila mon but si vous allez en bas de la page dont le lien est en heut, vous verrez page 1 2 si vous cliquez sur 2 , erreur 404

Le lien de cette page réécrit (on le voit qd on passe la souris dessus) est achat-24-page2.html
Le lien php qui fonctionne (on peut essayer) est index.php?dir=24&start=2

mais pour une raison que j'ignore, ca ne fonctionne pas pourtant la règle de conversion semble bonne non?

RewriteRule ^(.*)-([0-9]*)-page([0-9]*).html$ index.php?dir=$2&start=$3


Je vous remercie d'avance pour votre aide, c'est prèsque la dernière étape avant que je puisse lancer la nouvelle version du site :?

Charles :D
 
WRInaute impliqué
remplace tes * par des +, et surtout mets des \ devant les points....

RewriteRule ^(.*)-([0-9]+)\.html$ index.php?dir=$2
RewriteRule ^(.*)-([0-9]*)-ordre([0-9]+)\.html$ index.php?order=$3&dir=$2
RewriteRule ^(.*)-([0-9]*)-page([0-9]+)\.html$ index.php?dir=$2&start=$3
RewriteRule ^(.*)-([0-9]*)-page([0-9]+)-ordre([0-9]*)\.html$ index.php?order=$4&dir=$2&start=$3
RewriteRule ^(.*)\.html$ index.php?do=$1
 
WRInaute discret
Bonjour,

merci pour ce conseil je l'ai appliqué. Malheureusement ca ne fonctionne toujours pas. Néamoins, je l'ai laissé, c'est toujours une source d'ereur en moins :D .

Je ne comprends vraiment pas, j'ai même fait un cas particulier en mettant
RewriteRule ^achat-24-page2.html index.php?dir=24&start=2

et même ca ca ne fonctionne pas!!!!! alors que si je tape index.php?dir=24&start=2 ca fonctionne et que le lien achat-24-page2.html existe!!!!

Merci
 
WRInaute discret
Non je suis chez 1 and 1 mais je vais essayer mais je doute que cela provienne de la car la règle RewriteRule ^(.*)-([0-9]*)-ordre([0-9]+)\.html$ /index.php?order=$3&dir=$2 fonctionne sans problème. C'est la même avec la variable start qui ne fonctionne pas.

Merci
 
WRInaute discret
Bonjour,

non j'aimerais beaucoup mais malheureusement cela ne vient pas des slash. Ce qui fonctionnait sans fonctionne toujours avec et la ligne qui ne fonctionnait pas ne fonctionne malheureusement toujours pas :cry:

Vous avez d'autres idées d'ou ca pourrait bien venir? La vérité vient d'ailleurs :wink:

Merci

Charles
 
WRInaute occasionnel
Essaye d'ajouter le [R] après ta règle foireuse, comme ça tu auras l'URL trafiquée dans ton navigateur et tu auras peut-etre une explication du pourquoi ça marche pas (et si l'URL reste inchangée, c'est que la règle n'est carrément pas appliquée)
 
WRInaute discret
Bonne idée, merci beaucoup je vais essayer ca et je vous tiens au courant. J'ai en effet l'empression que la règle n'est pas appliquée. Je vais vérifier cela.

Bon w-e
 
WRInaute discret
Voilà, j'ai mis le [R] après la règle qui ne fonctionne pas et l'affichage ne montre que l'url rewritee et ne fait absolument pas la transition vers la requete php. Quelqu'un saurait me dire d'ou cela pourrait provenir? C'est quand même bizarre que les autres règles fonctionnent non?

Merci en tout cas, petit à petit, on avance :D
 
WRInaute occasionnel
Tu veux dire que tu vois bien l'URL rewritée comme elle devrait être ? Si je comprends bien, le pb viens de ton script PHP alors, non ?
 
WRInaute discret
Oui c'est que je pense aussi. Oui en fait en mettant la commande [R], je vois l'url sous forme mapage.html mais je ne vois pas que ca se "transforme" en index.php?do=....

Tu crois que ca vient du script alors? Ou? Dans la définition de la fonction url rewriting?

function code_url($string)
{
$string = strtolower($string);
$string = str_replace("( |')", "-", $string);
$accent = array('â','à','é','è','ê','î','ô','û','ç');
$sans_accent = array('a','a','e','e','e','i','o','u','c');
$string = str_replace($accent, $sans_accent, $string);
$string = eregi_replace("[^a-z0-9]","-",$string);
$string = eregi_replace("(^(_)*|(_)*$)","",$string);
$string = eregi_replace("(-){2,3}","",$string);
return $string;
}

C'est ce qui me semble le plus logique aussi car sinon, pourquoi les autre lignes du .htaccess fonctionneraient. En tout cas un grand merci, si vous voyez l'erreur, n'hésitez pas, quand on est le nez dedans toute la journée, on finit par ne plus rien voir 8O

Je vais chercher parallelement de mon coté en demandent à la personne qui a écrit le script. Merci bcp
 
WRInaute occasionnel
Euh, non, si avec le [R], l'URL qui apparait dans ton navigateur n'est pas celle rewritée en index.php?etc... c'est que le rewrite n'a pas fonctionné, donc que c'est le .htaccess qui merdoit.

Chez moi (avec xampp pour mes tests) ça fonctionne nickel avec ces règles (le [R] est pour vérifier la règle dans mon navigateur) :
Code:
RewriteEngine on

RewriteBase /

RewriteRule ^(.*)-([0-9]*).html$ index.php?dir=$2 [R]
RewriteRule ^(.*)-([0-9]*)-ordre([0-9]*).html$ index.php?order=$3&dir=$2 [R]
RewriteRule ^(.*)-([0-9]*)-page([0-9]*).html$ index.php?dir=$2&start=$3 [R]
RewriteRule ^(.*)-([0-9]*)-page([0-9]*)\-ordre([0-9]*).html$ index.php?order=$4&dir=$2&start=$3 [R]
RewriteRule ^(.*).html$ index.php?do=$1 [R]

Je ne vois pas ou peut être ton problème...
 
Discussions similaires
Haut