Leiten Sie alle http: // Anfragen an https: // um

22

Früher habe ich diese Frage gestellt: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento , aber keine Reaktion erhalten.

Hier ist die URL meiner Website: www.trendy-mode.nl. Sie wird Sie weiterleiten zu: https://www.trendy-mode.nl/

Das Problem ist nun, dass Menü-Links oder andere Unter-Links mit https://

EX nicht umgeleitet werden :
Es gibt ein Menü wie - NIEUW | KLEDING | SCHÖNEN | ZUBEHÖR usw.
Wenn Sie auf das Menü NIEUW klicken, wird eine neue Seite geöffnet, die Sie jedoch nicht weiterleiten könnenhttps://

Ich habe eine Menge .htaccess Tweaks ausprobiert, aber nicht funktioniert. Ist jemand hier, um mir dabei zu helfen?

Danke im Voraus!

Abhishek Kumbhani
quelle

Antworten:

30

Wenn Sie die unsichere Basis-URL in https ändern, werden alle Links geändert und Nicht-https-Anfragen an https://example.com/ (die Homepage) umgeleitet , da Magento dies tut, wenn die Validierung der Basis-URL fehlschlägt.

Das ist also ein guter Anfang, aber um http://example.com/foo/ zu https://example.com/foo/ umzuleiten , müssen Sie dies über die Webserver-Umleitung tun.

Fügen Sie beispielsweise den folgenden Code am oberen Rand Ihres Dokuments ein .htaccess:

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

Oder wenn Sie einen Reverse-Proxy wie Varnish verwenden:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Dies liegt daran, dass die Anfragen von Varnish an Magento ohne SSL (HTTP) erfolgen, Varnish jedoch den X-Forwarded-Proto-Header auf "https" setzt, wenn die ursprüngliche Anfrage mit SSL (HTTPS) gestellt wurde.

Fabian Schmengler
quelle
@Abhishek Ich habe gerade Ihre Site getestet und da sie noch nicht funktioniert, sind die obigen Fabian-Anweisungen korrekt. Aber ich sollte auch sagen, dass diese 2 Zeilen der .htaccess-Datei im Stammverzeichnis Ihrer Magento-Installation hinzugefügt werden sollten, aber NICHT oben (im Allgemeinen) ), aber wie unten erwähnt, gleich danach RewriteEngine On. Die Art und Weise, wie ich es getan habe, unterscheidet sich nur geringfügig darin, dass meine zweite Zeile lautet; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup
Hat jemand negative Auswirkungen auf den Google Page Rank gehabt, nachdem eine Magento-Site vollständig auf https umgestellt wurde?
Paj
10

Der Vollständigkeit halber machen wir auch eine sehr ähnliche Sache wie fschmengler mit einigen Ergänzungen vorgeschlagen hat;

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Wir platzieren dies im Abschnitt des .htaccess direkt darunter RewriteEngine On

Smartie
quelle
9

Stellen Sie Ihre Basis-URL für sicher und unsicher im Backend ein. Setzen Sie im Frontend im Backend yes auf use secure url.

Bearbeiten Sie dann Ihre App / etc / local.xml und fügen Sie diese ein

<?xml version="1.0"?>
<config>
  <frontend>
     <secure_url>
      <all>/</all>
     </secure_url>
   </frontend>
</config>

Oder fügen Sie zumindest das XML-Baum-Frontend ein und setzen Sie es zwischen die Konfigurations-Tags.

Michael
quelle
Dies hat mein Problem behoben. Ich hatte alles richtig eingestellt, aber einige URLs verwendeten immer noch http anstelle von https.
Mutiemule
Ich möchte die angegebene URL von https zu http umleiten. Hast du eine Ahnung davon?
Sarfaraj Sipai
5

Stellen Sie sicher System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Es wurde eingestellt yesund verursachte das Problem.

Fügen Sie den folgenden Code in die .htaccess-Datei ein.

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Vikas Verma
quelle
4

Ich denke, der einfachste Weg wäre, die nicht sichere Basis-URL in https zu ändern, da Magento dann alle "nicht sicheren" Anfragen an diese URL umleitet und auch die Links mit dieser URL generiert.

Sie können die Basis-URL unter System -> Konfiguration -> Allgemein -> Web ändern

David Verholen
quelle
Vielen Dank für deine Wiederholung. Ich habe es geschafft, aber jetzt, wenn du diesen Link öffnest: www.trendy-mode.nl/damesschoenen/slippers, springt es dich zur Homepage. Hast du eine Lösung?
Abhishek Kumbhani
hm das ist komisch :) Hat dir der abschließende Schrägstrich in der Basis-URL etwas ausgemacht? Ich denke, diese Angelegenheit ist wirklich interessant, da es höchstwahrscheinlich in Zukunft (oder vielleicht schon jetzt?) So relevant sein wird, dass die gesamte Seite https verwendet. Ich kann meinen Kollegen morgen fragen, da er dies bereits für einen Magento-Shop getan hat
David Verholen,
Obwohl die Lösung von fschmengler funktionieren sollte, denke ich, scheint die Antwort von @Michael der richtige Weg zu sein, wenn es funktioniert
David Verholen
Naja fschmengler antworten nicht falsch. Ich ärgere mich nur über die Magentos-Update-Strategie, da sie .htaccess und index.php berührt, nicht jedoch local.xml. So ist es mehr "Update Save" imho
Michael
2

In den Apache-Dokumenten wird die Verwendung eines Neuschreibens empfohlen:

httpGehen Sie wie httpsfolgt vor, um URLs umzuleiten :

 <VirtualHost *:80>
     ServerName www.example.com
     Redirect / https://www.example.com/
 </VirtualHost>

 <VirtualHost *:443>
     ServerName www.example.com
     # ... SSL configuration goes here
 </VirtualHost>

Dieses Snippet sollte in die Konfigurationsdatei des Hauptservers und nicht in .htaccessdie in der Frage gestellte.

Dieser Artikel ist möglicherweise erst aufgetaucht, nachdem die Frage gestellt und beantwortet wurde, scheint aber der aktuelle Weg zu sein.

Rakesh Soni
quelle
0

Fügen Sie diesen Code oben in die .htaccess-Datei ein

RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Mani
quelle