2016-12-07 6 views
1

Ich bin mit htaccess Umleitung stecken, Mischen einige Antworten [1] über htaccess Umleitung.htaccess: Umleitung aller Subdomain zu Haupt https www Domäne

Mein Ziel ist es, jede Subdomain (nicht www) zu meiner Hauptdomain umzuleiten (beginnend mit https://www.), Wobei die Request_URI (wie der angegebene Ordner) unverändert bleibt. Hier

ist, was ich getan habe:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.fr$ [NC] 
# OR : RewriteCond .* ^(.+)\.%{HTTP_HOST}%{REQUEST_URI}$ [NC] 

RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$ [NC] 
RewriteRule^https://www.mydomain.fr%{REQUEST_URI} [L,R=301,QSA] 

Diese Config leitet (starker Text ist schlecht Umleitung):

Swapping RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$ [NC]

zu

RewriteCond %{HTTP_HOST} !^https://www\.mydomain\.fr [NC] gab mir einen Fehler von schlechter Umleitung. Meine Gedanken waren zu prüfen, ob das HTTP_HOST in Format ist https://www.mydomain, wenn nicht mit Info-Anfrage RewriteRule^https://www.mydomain.fr/%{REQUEST_URI}

Warum gibt es eine schlechte Umleitung auf die gute URL umleiten? Muss ich 2 Sätze Bedingung und Regel schreiben, um zuerst die Subdomain zu prüfen, dann die HTTPS? (Ich versuche zur Zeit, um die Umleitung zu machen mit einer Regel und mehr Bedingungen, kann dies nicht die beste Praxis)

EDIT: Mein Ziel ist es, diese Umleitung zu haben:

Vielen Dank im Voraus für alle Antworten/Ideen.

EDIT 2:

ich die Antwort Larzan habe versucht, auf THIS Frage, und es scheint zu tun, was ich außer einem will: Wenn meine URL in meinem Browser so etwas wie https://foobar.mydomain.fr ist, zeigt der Browser mir große rote Warnung über Sicherheit, und ich muss das Risiko akzeptieren, dann ist die Umleitung zu https://www.mydomain.fr getan. Wie kann ich diese Warnung entfernen?

#First rewrite any request to the wrong domain to use the correct one (here www.) 
RewriteCond %{HTTP_HOST} !^www\.mydomain 
RewriteRule ^(.*)$ https://www.mydomain.fr%{REQUEST_URI} [L,R=301] 

#Now, rewrite to HTTPS: 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+1

Was bedeutet https://foo.mydomain.fr => https: // foo.mydomain.fr? Beide URLs sind gleich, nichts passiert? –

+0

Ich habe meine Frage bearbeitet, um hinzuzufügen, welche Umleitung ich möchte. @DusanBajic: Ich möchte die Subdomain foo unterdrücken. – Marcassin

+0

@anubhava: Ich würde gerne gehen httpS und nicht http – Marcassin

Antwort

0

mit dieser einzigen Regel beide Ihre Regeln ersetzen:

RewriteEngine On 

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$ [NC] 
RewriteRule^https://www.mydomain.fr%{REQUEST_URI} [L,R=301,NE] 

Testen Sie die Änderung nach dem Browser-Cache vollständig zu löschen.

+0

Hallo, diese Lösung beheben Sie die Umleitung 'www.mydomain.fr' =>' https: // www.mydomain.fr', aber wenn ich in meinem Explorer eingeben: 'https: // foobar.domain.fr' die URL ist immer noch gleich. Die eingegebene URL beginnt nicht mit einem www, daher sollte sie für die Weiterleitung akzeptiert werden. aber es scheint nicht. "www"! = "foobar" warum Apache das nicht sieht? Danke – Marcassin

+0

Diese Regel sollte auch für Subdomains funktionieren, aber Subdomain sollte auf das gleiche Verzeichnis verweisen wie das DocumentRoot der Hauptdomain. – anubhava

+0

Gibt es eine Möglichkeit, jede Subdomain (Wildcard) umzuleiten? also keine Verzeichnisdeklaration für Subdomain, nur für Hauptdomain. (vgl. EDIT 2). Danke – Marcassin

Verwandte Themen