2010-12-07 80 views
0

Bonjour, auditeur de longue date, première fois ici!
Merci pour les excellents conseils que vous partagez tous.
mod_rewrite: Comment faire correspondre le fichier dans le répertoire ou dans la racine en fonction de la 'disponibilité'?

J'ai ces règles mod_rewrite mis en place:

RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L] 
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L] 

Ils font /société/services/ redirect à l'entreprise - services.php. Ou/company/à company.php. Fonctionne parfaitement.

Mais maintenant je voudrais une autre règle que si je devais mettre services.php à l'intérieur du répertoire physique/compagnie/il correspondra et redirigera cela. Et si cela échoue, cherchez ma règle initiale. (Et à défaut, le retour 404.)

je me suis dit que ce serait aussi simple que notamment:

RewriteRule ^([^/.]+)/([^/.]+)/?$ $1/$2.php?%{QUERY_STRING} [L] 

mais pas. Il retournera un 404 à la place. Je suis un peu perplexe car cela va à l'encontre de la façon dont je pensais que mod_rewrite fonctionne (si une règle ne correspond pas, passez à la suivante.)
Merci pour vos conseils!

Répondre

0

Trouvé. Pour référence, il s'agit de l'ensemble des règles:

RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f 
RewriteRule ^([^/.]+)/([^/.]+)/?$ /$1/$2.php?%{QUERY_STRING} [L] 
RewriteRule ^([^/.]+)/([^/.]+)/?$ $1--$2.php?%{QUERY_STRING} [L] 
RewriteRule ^([^/.]+)/?$ $1.php?%{QUERY_STRING} [L] 
+0

Il n'est pas nécessaire d'ajouter la chaîne de requête. – Gumbo