OVH Community, votre nouvel espace communautaire.

Comportement des RewriteRules


hackmetal
11/05/2013, 22h50
Un grand merci buddy !
Il y avait effectivement une deuxième redirection que je n'avais pas vu !!

J'ai pu régler le problème grâce à toi. Le but du .* de fin sert à rediriger vers mon rooter de CakePHP

merci à toi

buddy
11/05/2013, 22h36
Salut,

question à 20 points,
tu sais combien de redirections sont faîtes en tout ?
Car le navigateur peut faire une requête vers toto.com/fichier.html
tu peux rediriger *.html vers page1.php
puis le navigateur fait une requête vers toto.com/page1.php
puis comme page1.php matche avec ^(.*)$ tu rewrite vers page2.php ...

si tu veux rediriger les pages "introuvables"
ErrorDocument 404 /page_404.php

çà marcherait pas mieux comme çà (pas testé du tout)

Code:
RewriteRule ^(.*).html$ page1.php [L]

RewriteCond %{REQUEST_URI} !=/page1.php
RewriteRule ^(.*) /page2.php [L]

hackmetal
11/05/2013, 21h53
C'est la même chose, ^(.*)\.html$ et ^(.*).html$ fonctionnent si je met uniquement cette RewriteRules

L'idée est bien d'avoir un fallback sur ^(.*)$ seulement si les règles précédentes ne matchent pas.

Gaston_Phone
11/05/2013, 21h45
RewriteRule ^(.*)\.html$ page1.php [L]

hackmetal
11/05/2013, 21h39
Bonjour =)

Je suis face à un problème de compréhension dans l’exécution des RewriteRules.
normalement l'option [L] est censée arrêter les tests de rewrite suivants et lancer la redirection, mais on dirait que c'est plus subtile que ça?

Si j'appelle une page test.html avec ces règles :

Code:
RewriteRule ^(.*).html$ page1.php  [L]
RewriteRule ^(.*).html$ page2.php [L]
Je suis bien redirigé sur la première règle qui match : page1.php
Par contre si je mets ces deux règles ci dessous, je suis redirigé sur page2.php alors que la première match également, et devrait donc stopper la deuxième règle !

Code:
RewriteRule ^(.*).html$ page1.php [L]
RewriteRule ^(.*)$     page2.php [L]
Je ne comprends pas du tout pourquoi la redirection ne s’arrête pas à la première règle. Mon but est de conserver absolument une dernière règle ^(.*)$ pour rediriger toutes les pages ne matchant pas, vers une page spécifique.

Quelqu'un aurait-il une idée sur ce comportement ?
Merci d'avance !
Anthony