Ich versuche, RewriteCond um den Kopf zu bekommen, und möchte alle Anfragen entweder auf eine statische HTML-Seite (falls vorhanden) oder auf eine bestimmte index.php (solange die angeforderte Datei nicht existiert).Simulation eines 2-Level-If-Else mit RewriteCond
die Logik Zur Veranschaulichung:
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
ich scheinen nicht viel Mühe zu haben, es zu tun, wenn ich für die HTTP_HOST müssen nicht testen. Letztendlich wird diese .htaccess-Datei Anfragen für mehrere Domains bearbeiten.
Ich weiß, ich könnte das mit Vhosts umgehen, aber ich würde gerne herausfinden, wie es so geht.
Ich kenne mich mit einigen der anderen Flags nicht aus, wird einer von ihnen hier nützlich sein (wie Kette | C, nächste | N oder überspringen | S)?
Vielen Dank im Voraus!
UPDATE: Ich habe es geschafft, es zu tun, würde aber Alternativen zu schätzen wissen:
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]
UPDATE # 2: Mit Hilfe von Gumbo Antwort, mit einem anderen kam. Ich mag, dass dies im Fall von zusätzlichen Domänen weniger Wartung erfordern würde. (Danke Gumbo!)
Gibt es irgendwelche Gründe, warum ich ENV-Variablen nicht setzen sollte?
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]
Danke! Solange ich mir dessen bewusst war, kannte ich die Syntax der No-Rewrite-Regel nicht. Dies gab mir die Idee für eine andere Lösung, die genau das ist, was ich wollte (aktualisiert den ursprünglichen Beitrag). Danke noch einmal! –