2010-05-11 4 views
1

Voici les règles:Comment l'indicateur [L] ne fonctionne pas dans mon fichier .htaccess?

<IfModule mod_rewrite.c> 
RewriteEngine on 

RewriteRule ^$ index.php?action=home [L] 
RewriteRule ^[\w\W]*$ error.php [L] 

Quand une page correspond à la première, il est censé ignorer toutes les autres règles supplémentaires. Cependant, l'accès à / entraîne l'appel de error.php. Commenter la deuxième règle fonctionne comme prévu - la page redirige vers index.php.

Qu'est-ce que je fais mal?

En outre: Y at-il un meilleur moyen d'écrire la dernière ligne? C'est fondamentalement un fourre-tout.

+0

je besoin de la dernière règle pour prendre effet ** que si les autres règles ne correspondaient pas **. –

+1

Peut-être causer 'dans le contexte .htaccess, [L] ne forcera pas mod_rewrite à arrêter' voir http://stackoverflow.com/questions/286004/hidden-features-of-mod-rewrite/286005#286005 –

Répondre

3

Vous pouvez changer

^[\w\W]*$-^[\w\W]+$ ou ^.+$

+0

Mais alors'/a', '/ b','/c', etc. ne correspondraient pas. –

+0

@George, '/ a','/b', '/ c' ira à error.php – YOU

+0

Non, ils le feraient. '+' est "un ou plusieurs", tandis que '*' est zéro ou plus. –

0

Si la dernière ligne est un fourre-tout, il suffit de faire RewriteRule ^.*$ error.php [L]

Votre première ligne pourrait être moindre erreur lorsque vous envoyez une demande de / parce que votre règle dit "rien" et vous envoyez /.

Essayez de changer votre règle RewriteRule ^/$ index.php?action=home [L]