J'essaie de comprendre RewriteCond et de réécrire toutes les requêtes soit sur une page html statique (si elle existe), soit sur un index.php spécifique (tant que le fichier demandé n'existe pas).Simulation d'un If-Else à 2 niveaux en utilisant RewriteCond
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 beaucoup de mal à faire quand je ne ai pas besoin de tester la HTTP_HOST. En fin de compte, ce fichier .htaccess traitera des demandes pour plusieurs domaines. Je sais que je pourrais contourner cela avec vhosts, mais je voudrais savoir comment le faire de cette façon.
Je ne connais pas très bien les autres drapeaux, y en aura-t-il qui seront utiles ici (comme chain | C, next | N ou skip | S)?
Merci d'avance!
MISE À JOUR: J'ai réussi à le faire, mais apprécierait des 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 la réponse de Gumbo, est venu avec une autre. J'aime que cela nécessiterait moins de maintenance dans le cas de domaines ajoutés. (Merci Gumbo!)
Y at-il des raisons pour lesquelles je ne devrais pas définir les variables ENV?
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]
Merci! Alors que j'en étais conscient, je ne connaissais pas la syntaxe de la règle de non-réécriture. Cela m'a donné l'idée d'une autre solution qui s'avère être exactement ce que je voulais (mis à jour le message original). Merci encore! –