Przekieruj wszystkie żądania http: // do https: //

22

Wcześniej opublikowałem to pytanie: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento, ale nie otrzymałem żadnej reakcji.

Oto mój adres URL witryny: www.trendy-mode.nl przekieruje cię do: https://www.trendy-mode.nl/

Teraz problem polega na tym, że link do menu lub inne podlinki nie są przekierowywane z https://

EX:
Istnieje menu takie jak - NIEUW | KLEDING | SCHOENEN | AKCESORIA itp.
Jeśli klikniesz menu NIEUW, otworzy się nowa strona, ale nie nastąpi przekierowaniehttps://

Próbowałem wiele poprawek .htaccess, ale nie działa. Czy jest tu ktoś, kto mi w tym pomoże?

Z góry dziękuję!

Abhishek Kumbhani
źródło

Odpowiedzi:

30

Zmiana niezabezpieczonego podstawowego adresu URL na https spowoduje zmianę wszystkich linków i przekierowanie żądań innych niż https na https://example.com/ (stronę główną), ponieważ to właśnie Magento robi, gdy sprawdzanie podstawowego adresu URL nie powiedzie się.

To dobry początek, ale aby przekierować http://example.com/foo/ na https://example.com/foo/ , musisz to zrobić za pośrednictwem przekierowania serwera WWW.

Na przykład dodaj następujący kod u góry .htaccess:

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

Lub jeśli używasz odwrotnego proxy, takiego jak Varnish:

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

Wynika to z faktu, że żądania z Varnish do Magento nie będą zawierać SSL (HTTP), ale Varnish ustawia nagłówek X-Forwarded-Proto na „https”, jeśli pierwotne żądanie zostało wykonane za pomocą SSL (HTTPS).

Fabian Schmengler
źródło
@Abhishek Właśnie przetestowałem twoją stronę i ponieważ jeszcze nie działa - powyższe instrukcje Fabianów są poprawne .. ale powinny również powiedzieć, że te 2 wiersze powinny zostać dodane do pliku .htaccess w katalogu głównym instalacji Magento, ale NIE na górze (ogólnie ), ale jak wspomniano poniżej, zaraz po RewriteEngine On. Sposób, w jaki to zrobiłem, jest nieco inny, ponieważ czytam moją drugą linię; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup,
Czy ktoś doświadczył niekorzystnego wpływu na pozycję strony w Google po całkowitym przeniesieniu witryny Magento do https?
paj
10

Dla kompletności robimy również bardzo podobne do tego, co sugerował fschmengler z kilkoma dodatkami;

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

Umieszczamy to w sekcji .htaccess tuż poniżej RewriteEngine On

Smartie
źródło
9

Ustaw swój podstawowy adres URL dla bezpiecznego i niezabezpieczonego zaplecza. Ustaw tak przy korzystaniu z bezpiecznego adresu URL w interfejsie użytkownika.

Następnie edytuj swoją aplikację / etc / local.xml i dołącz to

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

Lub przynajmniej wklej frontend drzewa XML i niżej pomiędzy znacznikami config.

Michał
źródło
To naprawiło mój problem. Poprawiłem wszystko, ale niektóre adresy URL nadal używały http zamiast https.
mutiemule
Chcę przekierować określony adres URL z https na http. więc masz jakiś pomysł na ten temat?
Sarfaraj Sipai
5

Upewnij się System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Zostało ustawione na yesi powodowało problem.

Umieść poniższy kod w pliku .htaccess.

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

Myślę, że najprościej byłoby zmienić niezabezpieczony podstawowy adres URL na https, ponieważ magento następnie przekierowuje wszystkie „niezabezpieczone” żądania do tego adresu, a także generuje linki z tym adresem.

możesz zmienić podstawowy adres URL w systemie -> konfiguracja -> ogólne -> sieć

David Verholen
źródło
Dziękuję za powtórkę. Zrobiłem to, ale teraz, jeśli otworzysz ten link: www.trendy-mode.nl/damesschoenen/slippers, przejdziesz do strony głównej. masz jakieś rozwiązanie?
Abhishek Kumbhani,
hm, to dziwne :) Nie przeszkadzało ci końcowe slash w podstawowym adresie URL? Myślę, że ta sprawa jest naprawdę interesująca, ponieważ najprawdopodobniej w przyszłości (a może już teraz?) Najprawdopodobniej będziesz mieć SEO, aby cała strona korzystała z https. Mogę jutro poprosić mojego kolegę, ponieważ zrobił to już dla sklepu Magento
David Verholen
chociaż rozwiązanie fschmenglera powinno działać, myślę, że odpowiedź @ Michaela wydaje się być dobrym sposobem, aby to zrobić, jeśli
zadziała
Otóż ​​odpowiedź fschmenglerów nie jest fałszywa. Jestem po prostu zirytowany strategią aktualizacji Magentos, ponieważ dotyka ona plików .htaccess i index.php, ale nie local.xml. Więc to bardziej imho aktualizacja aktualizacji
Michael
2

Dokumenty Apache odradzają używanie przepisywania:

Aby przekierować httpadresy URL https, wykonaj następujące czynności:

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

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

Ten fragment kodu powinien przejść do pliku konfiguracji głównego serwera, a nie do pliku .htaccesszadanego w pytaniu.

Ten artykuł mógł pojawić się dopiero po zadaniu pytania i udzieleniu odpowiedzi, ale wydaje się, że jest to aktualna droga.

Rakesh Soni
źródło
0

Dodaj ten kod na górze pliku .htaccess

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
źródło