Alihkan semua http: // permintaan ke https: //

22

Sebelumnya saya telah mengirimkan pertanyaan ini: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento tetapi tidak mendapat reaksi.

Berikut ini adalah URL situs saya: www.trendy-mode.nl akan mengarahkan Anda ke: https://www.trendy-mode.nl/

Sekarang masalahnya adalah tautan menu atau sub-tautan lain tidak dialihkan dengan https://

EX:
Ada menu seperti - NIEUW | KLEDING | SCHOENEN | ACCESSOIRES dll.
Jika Anda mengklik menu NIEUW, halaman baru akan terbuka tetapi tidak diarahkanhttps://

Saya telah mencoba banyak. Htaccess tweak tetapi tidak berhasil. Adakah yang membantu saya dalam hal ini?

Terima kasih sebelumnya!

Abhishek Kumbhani
sumber

Jawaban:

30

Mengubah url basis tidak aman ke https akan mengubah semua tautan dan mengalihkan permintaan non-https ke https://example.com/ (halaman beranda), karena itulah yang dilakukan Magento ketika validasi URL dasar gagal.

Jadi ini adalah awal yang baik tetapi untuk juga mengarahkan kembali http://example.com/foo/ ke https://example.com/foo/ Anda perlu melakukannya melalui pengalihan webserver.

Misalnya, tambahkan kode berikut di bagian atas Anda .htaccess:

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

Atau jika Anda menggunakan proksi terbalik seperti Varnish:

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

Ini karena permintaan dari Varnish ke Magento akan tanpa SSL (HTTP), tetapi Varnish menetapkan header X-Forwarded-Proto menjadi "https" jika permintaan asli dibuat dengan SSL (HTTPS).

Fabian Schmengler
sumber
@Abhishek Saya baru saja menguji situs Anda dan karena itu belum berfungsi - Instruksi Fabian di atas sudah benar .. tetapi juga harus mengatakan bahwa 2 baris ini harus ditambahkan ke file .htaccess di root instalasi magento Anda tetapi BUKAN di atas (umumnya ) tetapi seperti yang disebutkan di bawah, tepat setelah RewriteEngine On. Cara saya melakukannya hanya sedikit berbeda dengan baris kedua saya baca; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup
Adakah yang mengalami efek buruk pada peringkat halaman Google setelah memindahkan situs magento sepenuhnya ke https?
paj
10

Untuk kelengkapan kami juga melakukan hal yang sangat mirip dengan apa yang disarankan fschmengler dengan beberapa tambahan;

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

Kami menempatkan ini di dalam bagian .htaccess tepat di bawah RewriteEngine On

Smartie
sumber
9

Atur url dasar Anda agar aman dan tidak aman di backend. Tetapkan ya saat menggunakan url aman di frontend di backend.

Kemudian edit aplikasi / etc / local.xml Anda dan sertakan ini

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

Atau setidaknya tempel frontend pohon XML dan lebih rendah di antara tag konfigurasi.

Michael
sumber
Ini memperbaiki masalah saya. Saya telah mengatur semuanya dengan benar tetapi beberapa url masih menggunakan http alih-alih https.
mutiemule
saya ingin mengarahkan url tertentu dari https ke http. jadi apakah Anda punya ide tentang itu?
Sarfaraj Sipai
5

Pastikan System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Itu diatur ke yes, dan menyebabkan masalah.

Masukkan kode di bawah ini dalam file .htaccess.

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

Saya pikir cara termudah adalah dengan mengubah url basis tidak aman ke https karena magento kemudian mengalihkan semua permintaan "tidak aman" ke url ini dan juga menghasilkan tautan dengan url ini.

Anda dapat mengubah url dasar di bawah sistem -> konfigurasi -> umum -> web

David Verholen
sumber
Terima kasih atas ulangan Anda .. saya berhasil tetapi sekarang jika Anda membuka tautan ini: www.trendy-mode.nl/damesschoenen/slippers ia akan mengarahkan Anda ke beranda. punya solusi?
Abhishek Kumbhani
hm itu aneh :) Apakah Anda keberatan dengan garis miring pada url dasar? Saya pikir masalah ini sangat menarik karena kemungkinan besar akan relevan untuk masa depan (atau mungkin sudah sekarang?) Untuk memiliki seluruh halaman menggunakan https. Saya bisa bertanya pada kolega saya besok karena dia sudah melakukan ini untuk toko
magento
walaupun solusi fschmengler seharusnya berfungsi, saya pikir, jawaban @Michael sepertinya cara yang tepat untuk melakukan ini jika berhasil
David Verholen
Yah jawaban fschmenglers tidak salah. Saya hanya jengkel dengan strategi pembaruan Magentos karena menyentuh .htaccess dan index.php tetapi tidak local.xml. Jadi lebih 'perbarui save' imho
Michael
2

The docs Apache merekomendasikan menggunakan penulisan ulang:

Untuk mengarahkan httpURL https, lakukan hal berikut:

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

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

Cuplikan ini harus masuk ke file konfigurasi server utama, bukan ke .htaccessseperti yang ditanyakan dalam pertanyaan.

Artikel ini mungkin muncul hanya setelah pertanyaan diajukan dan dijawab, tetapi tampaknya cara saat ini untuk pergi.

Rakesh Soni
sumber
0

Tambahkan kode ini di bagian atas file .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
sumber