J'essaie de mieux comprendre mod_rewrite et j'ai un problème particulier dont je pense avoir besoin pour faire le tour en premier.Problèmes de mod_rewrite: négation
Je réécris http://www.somesite.tld/a/b/c
-index.php?path=a/b/c
en utilisant les éléments suivants
RewriteRule ^(?!index.php)(.*)$ index.php?path=$1 [NC,L]
Une réécriture équivalente serait, dans ce cas, être
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1 [NC,L]
- Cela ne fonctionne pas sans
RewriteCond
- path = index.php serait le résultat sans ignorer spécifiquement les fichiers ou dire 'pas index.php'. Pourquoi est-ce? - En outre, quelle est la syntaxe
?!
et?:
que je vois parfois utilisée? Je ne comprends pas l'utilisation du?
lorsqu'il n'est pas préfixé par quoi que ce soit. - Et pourquoi, dans la première RewriteRule ci-dessus, est-ce que la deuxième paire de parenthèses renvoie une correspondance pour $ 1?
Vive
Heureux que je pose cette question, je ne connaissais pas les assertions lookahead mais elles me semblent très utiles. – dianovich