2017-12-20 21 views
0

Ich weiß, es ist eine endlose Anzahl von zur Verfügung gestellt .htaccess -lösungen hier, aber keiner von ihnen Umleitungen an https mit www nur für Hauptdomäne, aber für https ohne www nur für Subdomains. Basiert auf this Frage mit einer Lösung über php, jetzt möchte ich meine .htaccess-Datei ändern, um die folgenden Bedürfnisse zu erfüllen..htaccess: Redirect Hauptdomain zu https: // www, Sub-Domain zu https: // (ohne www)

Haupt domain:

  • Redirect http zu https
  • Redirect non-www zu www
  • (für Haupt domain: wwwwird Wünsche offen und erscheinen soll)

Subdomänen:

  • Redirect http zu https
  • Redirect www zu non-www
  • (für Unterdomänen: www nicht erwünscht und sollte nicht erscheinen)

sieht Mein aktueller Ansatz wie folgt aus: Ich denke,

RewriteEngine on 

# Ensure https for all domains (main- and subdomains): 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# Redirect non-www to www only for main domain, but not for subdomains: 
RewriteCond %{HTTP_HOST} ^(domain\.com)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L] 

# Redirect www to non-www only for subdomains: 
RewriteCond %{HTTP_HOST} ^(www\.)?subdomain\.domain\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteRule^https://subdomain.domain.com%{REQUEST_URI} [R=301,L,NE] 

  • Es gibt einige Fehler mit der Sub-Domain ist?
  • Ich verstehe den Teil RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} im allerersten Befehl nicht: Sendet dieser Befehl den Besucher nicht an die Hauptdomain, wenn er die Subdomain ohne https betritt? Oder enthält {HTTP_HOST} bereits mögliche Subdomains?

Kommentar: Die Sub-Domain einen völlig anderen Inhalt als die Haupt-Domain hat (könnte private.website.com oder cloud.website.com zum Beispiel). Es ist nicht nur eine andere Sprache. Aus diesem Grund scheint es nicht sinnvoll zu sein, eine interne Weiterleitung über Browser-Herkunft oder CMS zu erstellen. Es sollte nur über .htaccess-entry durchgeführt werden.

Antwort

1

Die Regel für Sub-Domain Teil dupliziert wird, sollten Sie dies ändern:

RewriteCond %{HTTP_HOST} ^www\.subdomain\.domain\.com$ [NC] 
RewriteRule^https://subdomain.domain.com%{REQUEST_URI} [R=301,L,NE] 

Für diese Regeln:

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Zeile 1: wenn die https off

ist

Linie 2 Umleiten Sie den Benutzer für beliebige Muster permanent an https://%{HTTP_HOST}%{REQUEST_URI}. Die %{HTTP_HOST} wird aus den HTTP request header erhalten, und wenn der Benutzer einen Antrag domain.com, die %{HTTP_HOST}domain.com ist, während die diese Anforderung subdomain.domain.com gemacht wird, die %{HTTP_HOST} dann subdomain.domain.com

Verwandte Themen