31-07-2008, 04:16 PM
@Barst > Non, le traitement ne s'arrête pas sur cette condition, pourquoi ?
Code PHP :
<?php
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^index.html$ /index.php
RewriteRule ([a-z]+).html$ /index.php?do=$1
RewriteCond %{HTTP_HOST} ^monsite.com [NC]
RewriteRule ^(.*)$ http://monsite.com$1 [QSA,R=301,L]
Voilà dans quel ordre se trouve les motifs, voilà comment cela se passe :
La requête : http://monsite.com/test.html
Apache catch : test.html
Et verifie selon les conditions dans l'ordre ou elles sont :
- 1ere condition --> non valable
- 2eme condition valable --> il applique le motif et continue son traitement
Donc Apache continue le parsing des motifs et va jusqu'à celle qui contient le rajout de www qui elle arrete bien le traitement car contenant la directive [L].
@Eluox > il faut que tu ajoutes des paramètres a ton url ré-écrite pour qu'elle ne passe pas dans la seconde condition. Il faut analyser et structurer ses liens correctement, là en l'occurence, si tu veux que test.html ne correspondent pas a la condition sur lequel elle tombe tu dois modifier cette condition pour qu'elle s'applique uniquement aux pages qui ont besoin de l'index utilisant le parametre do, soit :
Code PHP :
<?php
RewriteRule do-([a-z]+).html$ /index.php?do=$1