Ich bin derzeit mit einem Endlosschleife Problem mit mod_rewrite stecken.Apache mod_rewrite - rewrite zu Ordnernamen basierend auf% {HTTP_HOST} - Endlosschleife
Was will ich (Regeln werden angewandt, um):
- stript www (Redirect)
- Schreibanforderung, damit die Dateien im Ordner mit dem Namen% {HTTP_HOST} (falls vorhanden) verwendet werden,
- , wenn der Ordner nicht existiert, umleiten
Beispiele domain.tld:
- www.subdomain.domain.tld => umleiten
- subdomain.domain.tld => Ladedateien im Ordner mit dem Namen subdomain.domain.tld (und übergeben Sie den Rest der Anfrage) subdomain.domain.tld
- unknown-subdomain.domain.tld => umleiten
domain.tld Was ich so weit gekommen:
RewriteEngine On
# Store protocol (HTTP or HTTPS) as ENV variable
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"https"' [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
# Stript www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule^%{ENV:proto}://%1%{REQUEST_URI} [L,NC,QSA,R=301]
# Directory exists => rewrite
RewriteCond %{REQUEST_URI} !^/%{HTTP_HOST} [NC]
RewriteCond %{HTTP_HOST} -d
RewriteRule^%{HTTP_HOST}%{REQUEST_URI} [L,NC,QSA]
# Directory doesn't exist => redirect
RewriteCond %{REQUEST_URI} !^/%{HTTP_HOST} [NC]
RewriteCond %{HTTP_HOST} !-d
RewriteRule^%{ENV:proto}://domain.tld%{REQUEST_URI} [L,NC,QSA,R]
ich weiß, das alles mit virtuellen Hosts erreicht werden kann. Leider bin ich bereits auf einem freigegebenen virtuellen Host und .htaccess ist alles, was ich nutzen kann, also bin ich irgendwie gezwungen, so zu gehen.
Ich bin dankbar für jede Hilfe oder Ideen, die mich in die richtige Richtung führen.
Wo Sie für die Verzeichnisse suchen? Wenn alle Ihre Sub-Domains HTTPS unterstützen, leiten Sie Ihre Benutzer immer an eine SSL-Verbindung weiter. – hjpotter92
Die Verzeichnisse befinden sich im selben Ordner wie der .htaccess. Der Erhalt des Protokolls ist eher eine Spielerei und weil es in der Entwicklungsumgebung nicht unterstützt wird. Sie haben absolut Recht, wenn möglich immer HTTPS zu verwenden, was in der endgültigen Version der Fall sein wird. –
Was ist die Apache-Version? –