it-swarm.com.de

Wie erzwinge ich ssl und www für eine Subdomain als unabhängige Domain?

Ich besitze den example.tld.
Ich möchte SSL und https für root-domain und alle seine subdomains erzwingen.
Ich habe den folgenden Code in der .htaccess -Datei der Root-Domain verwendet:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} !^www\.example\.tld$ [NC]
RewriteRule ^(.*)$ https://www.example.tld/$1 [L,R=301]

Es sieht gut aus für Root-Domain.
Aber für Subdomains wie blog.example.tld habe ich verschiedene Vorschläge verwendet, wie zum Beispiel:

RewriteCond %{HTTP_Host} ^blog\.example.\tld$ [NC]
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [R=301,L,NE]

Aber keiner von ihnen funktioniert ordnungsgemäß und sie leiten zu ssl www version von root-domain weiter, anstatt zu ssl www version von subdomain.
Was soll ich machen?

4
Pasakgroup

Endlich habe ich das Problem gefunden.
Problem wurde durch Hosteinstellungen verursacht.

Aufgrund einiger Probleme musste ich die Subdomain im Host als independent domain definieren. Dies wirft Probleme mit Redirects auf. Denn anstelle der Unterdomäne hat die Hauptdomäne auf Redirection commands geantwortet.

Um dieses Problem zu lösen, habe ich die Subdomain auf einen anderen Host übertragen. Daher wurde Redirection commands für die Subdomain von einem neuen Host mit Subdomain beantwortet.

In dieser neuen Situation erzwingt der folgende einfache Befehl ssl and www for subdomain:

RewriteEngine On
RewriteCond %{HTTP_Host} !^www\.sub.example\.tld$ [NC]
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]

Ich hoffe, diese Erfahrung wird für andere nützlich sein.

3
Pasakgroup

Keiner von ihnen funktioniert jedoch ordnungsgemäß, und sie leiten zur SSL-WWW-Version der Stammdomäne weiter, anstatt zur SSL-WWW-Version der Unterdomäne.

(Ich gehe davon aus, dass alle Ihre Subdomains demselben Bereich des Dateisystems zugeordnet sind.)

Es hört sich so an, als hätten Sie die Anweisungen in die falsche Reihenfolge gebracht. Wenn Sie die Subdomain-Umleitung nach der Root-Domain-Umleitung platziert haben, wird sie niemals verarbeitet, und die Root-Domain-Umleitung erfasst alle Subdomain-Anforderungen und leitet sie weiter die Subdomain zurück zur Root-Domain, da die Direktive RewriteCond prüft, ob die angeforderte Domain nicht www.example.tld - this ist passt auch zur Subdomain.

Wenn Sie jedoch die www-Unterdomäne immer erzwingen möchten (auch für Ihre Unterdomänen ), können Ihre Direktiven in einer einzigen Regel "vereinfacht" werden . Zum Beispiel:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} !^www\.
RewriteCond %{HTTP_Host} ^(?:www\.)?(.+)\.?$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

Dies entspricht einer Anforderung, die entweder HTTP oder ist und www. nicht startet und zu HTTPS umleitet, wobei das Präfix www (falls notwendig). Die Anweisung 3rd RewriteCond ist erforderlich, um den angeforderten Hostnamen abzüglich eines www. -Präfixes (falls vorhanden) zu erfassen. Der %1 in der Ersetzung ist ein Rückverweis auf den Hostnamen, abzüglich eines www.-Präfixes.

Dies betrifft natürlich alle Domains auf dem Konto (wenn Sie mehr als eine haben).

PDATE: Ich habe gerade Ihre Antwort gesehen, bin mir also nicht sicher, ob dies jetzt relevant ist oder nicht?

3
MrWhite