La simulation d'un 2-niveau Si-Sinon à l'aide de RewriteCond

Je vais essayer d'obtenir ma tête autour de la Condition, et veulent réécrire toutes les demandes, soit à une page html statique (si elle existe), ou à une index.php (tant que le fichier demandé n'existe pas).

Pour illustrer la logique:

if HTTP_HOST is '(www\.)?mydomain.com'
    if file exists: "/default/static/{REQUEST_URI}.html", then
        rewrite .* to /default/static/{REQUEST_URI}.html
    else if file exists: {REQUEST_FILENAME}, then
        do not rewrite
    else
        rewrite .* to /default/index.php

Je ne semble pas avoir trop de difficulté à le faire quand je n'ai pas besoin de tester pour la HTTP_HOST. En fin de compte, celui-ci .fichier htaccess sera la gestion des demandes pour plusieurs domaines.

Je sais que je pourrais contourner ce problème avec des vhosts, mais j'aimerais comprendre comment le faire de cette façon.

Je ne suis pas trop familier avec certains des autres drapeaux, sera l'un d'entre eux d'utilisation (comme la chaîne|C, suivant|N ou skip|S)?

Merci d'avance!


Mise à JOUR: j'ai réussi à le faire, mais apprécierait alternatives:

RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..* [NC]
RewriteCond %{DOCUMENT_ROOT}/%1/static/%{REQUEST_URI}.html -f
RewriteRule (.*)? /%1/static/$1.html [NC,L]

RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..* [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /%1/index.php [L,QSA]

Mise à JOUR #2: Avec l'aide de Gumbo réponse, est venu avec un autre. J'aime que cela allait nécessiter moins d'entretien dans le cas de l'ajout des domaines. (Merci Gumbo!)

Sont là des raisons pour lesquelles je ne devrais pas définir des variables d'environnement?

RewriteCond %{HTTP_HOST} ^(domainA|domainB)\..*$ [NC]
RewriteRule ^ - [E=APP:%1]

RewriteCond %{DOCUMENT_ROOT}/%{ENV:APP}/static/%{REQUEST_URI}.html -f       
RewriteRule (.*)? /%{ENV:APP}/static/$1.html [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /%{ENV:APP}/index.php [L,QSA]

OriginalL'auteur Henrik L. | 2010-05-14