Estoy tratando de entender RewriteCond, y quiero reescribir cualquier solicitud en una página html estática (si existe), o en un index.php específico (siempre que el archivo solicitado no exista).Simulando un If-Else de 2 niveles usando RewriteCond
Para ilustrar la lógica:
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
no parece tener mucha dificultad para hacerlo cuando no necesito para probar la HTTP_HOST. En última instancia, este archivo .htaccess gestionará solicitudes para varios dominios.
Sé que podría evitar esto con fantasmas, pero me gustaría descubrir cómo hacerlo de esta manera.
No estoy muy familiarizado con algunas de las otras banderas, ¿alguna de ellas será útil aquí (como chain | C, next | N o skip | S)?
¡Gracias de antemano!
ACTUALIZACIÓN: Me las he arreglado para hacerlo, pero agradecería alternativas:
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]
ACTUALIZACIÓN # 2: Con la ayuda de la respuesta de Gumbo, se le ocurrió otra. Me gusta que esto requeriría menos mantenimiento en el caso de dominios agregados. (Gracias Gumbo!)
¿Hay alguna razón por la que no deba establecer las 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]
Gracias! Mientras estaba al tanto, no sabía la sintaxis de la regla de no reescritura. Esto me dio la idea de otra solución que resulta ser exactamente lo que quería (actualicé la publicación original). ¡Gracias de nuevo! –