it-swarm.dev

Umleitung zu HTTP nicht-www zu HTTPS www htaccess

Ich möchte mit HTTPS-Protokoll von einer beliebigen Seite zu unserer Website umleiten, aber einige Umleitungen funktionieren nicht. Ich will das:

  • http://www.site.co TO https://www.site.co
  • http://site.co TO https://www.site.co

Das ist mein Zugang:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 

RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

Die zweite Regel funktioniert nicht. Es geht in eine andere Richtung innerhalb unserer Site, und es wird nicht zur HTTPS-Site weitergeleitet.

12
Anibal Mauricio

Versuchen Sie es so:

RewriteEngine On

RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

Der einzige wirkliche Unterschied besteht hier darin, dass wir zuerst von Nicht-WWW zu WWW umleiten, dann nach HTTPS suchen und es umleiten.

Wenn es nicht funktioniert, versuchen Sie es mit:

RewriteEngine On

RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 
40
Prix

Die Antwort von Prix funktioniert. Um es dynamischer zu gestalten, können wir SERVER_NAME und REQUEST_URI anstelle eines statischen Domänennamens verwenden.

RewriteEngine On
#we replace domain.com/$1 with %{SERVER_NAME}%{REQUEST_URI}.
RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*) https://www.%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

#here we dont use www as non www was already redirected to www.
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
22
Alvin

Ich habe eine asp.net-Website und der Host-Anbieter unterstützt das IIS) -Umschreibemodul nicht. Ich habe alle diese Methoden getestet und nur dieser Code gibt eine Bestätigung für woorank.com, die möglicherweise für einen anderen .net-Entwickler nützlich ist:

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
1
Mehdi Saghari

Es tut mir leid, ich habe nicht genug Punkt zum Kommentieren, aber die Regel von @prix bringt unnötige Weiterleitungen. 

RewriteEngine On

RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 

Sie können http://domain.com/ auf GTMETRIX ausprobieren und erhalten diese Meldung

 "Avoid landing page redirects for the following chain of redirected URLs."

http://domain.com/
http://www.domain.com/
https://www.domain.com/

Um dies zu verhindern, gehen Sie zur ersten RewriteRule und fügen Sie am Ende von http ein "s" ein. Die neue Regelgruppe sieht folgendermaßen aus: 

RewriteEngine On

RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 

Wenn Sie One.com als Webhost verwenden, sollten Sie stattdessen den folgenden Code verwenden:

RewriteEngine On
RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
1
Robin

Dies ist http zu https und nicht www zur www-Weiterleitung mit .htaccess  

Wenn Sie zu https und www umleiten möchten, können Sie diesen Code verwenden

http zu https Umleitung:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>

Nicht WWW zu WWW Weiterleitung:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_Host} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_Host}/$1 [R=301,L]
</IfModule>

Wenn Sie die Standfunktionalität verwenden möchten, platzieren Sie jeweils den obigen Code

1
Milan Krushna

versuchen Sie es unten und funktioniert gut

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com$1 [R,L]
1
xamDev

Versuchen Sie diese Methode:

# Redirect 301 all to https://www
<IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} off [OR]
   RewriteCond %{HTTP_Host} !^www\. [NC]
   RewriteCond %{HTTP_Host} ^(.*)$  [NC]
   RewriteRule (.*) https://www.example.com/$1 [L,R=301]
</IfModule>

Warum brauchen Sie manchmal keinen Code % {HTTP_Host} und verwenden Ihre Domain-genaue URL mit www für die letzte Zeile, weil das Ergebnis normalerweise zwei www wie folgt hat:

https://www.www.yourdomain.com

Übrigens, wenn Sie Cloudflare verwenden, erstellen Sie einfach Seitenumbrüche, um 301 all auf die https- und die www-Version umzuleiten.

PageRules erstellen Füllen Sie mit

example.com/*

Wählen Sie die Einstellung forward url, wählen Sie dann 301 und füllen Sie diese aus

https://www.example.com/$1

Speichern Sie es und alle werden zu https und zur WWW-Version umgeleitet.

0
Hans Ganteng

Ich benutze das:

RewriteEngine On

RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [END,NE,R=permanent]
0
Cyborg

Dies wird sowohl für www als auch für nicht-www verwendet. Wenn Sie versuchen, den Link mit www zu öffnen, leiten Sie die URL zu https mit www um 

Example : http://domain.com redirect to https://domain.com

oder Wenn Sie versuchen, einen Link mit Nicht-WWW zu öffnen, leiten Sie die URL zu https mit Nicht-WWW um

Example : http://www.domain.com redirect to https://www.domain.com

RewriteEngine on

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
0
Ajay Patidar

Fügen Sie einfach Folgendes in die .htaccess-Datei ein 

 RewriteEngine on

 RewriteCond %{SERVER_PORT} 80 
 RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
0