Chuyển hướng tất cả http: // yêu cầu sang https: //


22

Trước đó tôi đã đăng câu hỏi này: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento nhưng không nhận được bất kỳ phản ứng nào.

Đây là URL trang web của tôi: www.trendy-mode.nl nó sẽ chuyển hướng bạn đến: https://www.trendy-mode.nl/

Bây giờ vấn đề là liên kết menu hoặc bất kỳ liên kết phụ nào khác không được chuyển hướng với https://

EX:
Có menu như - NIEUW | KHAI THÁC | HỌC BỔNG | TRUY CẬP, vv
Nếu bạn nhấp vào menu NIEUW, một trang mới sẽ được mở nhưng không chuyển hướng vớihttps://

Tôi đã thử rất nhiều chỉnh sửa .htaccess nhưng không hoạt động. Có ai ở đây để giúp tôi về điều này?

Cảm ơn bạn trước!

Câu trả lời:


30

Thay đổi url cơ sở không an toàn thành https sẽ thay đổi tất cả các liên kết và chuyển hướng các yêu cầu không phải https sang https://example.com/ (trang chủ), vì đó là những gì Magento làm khi xác thực URL cơ sở không thành công.

Vì vậy, đây là một khởi đầu tốt nhưng cũng chuyển hướng http://example.com/foo/ sang https://example.com/foo/ bạn cần thực hiện thông qua chuyển hướng máy chủ web.

Ví dụ: thêm mã sau vào đầu .htaccess:

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

Hoặc nếu bạn sử dụng proxy ngược như Varnish:

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

Điều này là do các yêu cầu từ Varnish đến Magento sẽ không có SSL (HTTP), nhưng Varnish đặt tiêu đề X-Forwarded-Proto thành "https" nếu yêu cầu ban đầu được thực hiện với SSL (HTTPS).


@Abhishek Tôi mới kiểm tra trang web của bạn và vì nó chưa hoạt động - Các hướng dẫn của Fabians ở trên là chính xác .. nhưng cũng nên nói rằng 2 dòng này nên được thêm vào tệp .htaccess trong thư mục cài đặt magento của bạn nhưng KHÔNG ở trên cùng (nói chung ) nhưng như đã đề cập dưới đây, ngay sau đó RewriteEngine On. Cách tôi đã làm nó chỉ khác một chút ở chỗ dòng thứ hai của tôi đọc; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup 22/03/2016

Có ai gặp phải tác dụng phụ trên thứ hạng trang google sau khi chuyển hoàn toàn một trang web magento sang https chưa?
ngủ

10

Để hoàn thiện, chúng tôi cũng làm một điều rất giống với những gì fschmengler đã đề xuất với một số bổ sung;

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

Chúng tôi đặt cái này bên trong phần của .htaccess ngay bên dưới RewriteEngine On


9

Đặt url cơ sở của bạn để bảo mật và không an toàn trong phần phụ trợ. Đặt có khi sử dụng url bảo mật ở lối vào trong phụ trợ.

Sau đó chỉnh sửa ứng dụng / etc / local.xml của bạn và bao gồm cái này

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

Hoặc ít nhất là dán giao diện cây XML và thấp hơn ở giữa các thẻ cấu hình.


Điều này đã khắc phục vấn đề của tôi. Tôi đã đặt mọi thứ đúng nhưng một số url vẫn đang sử dụng http thay vì https.
đột biến

tôi muốn chuyển hướng url cụ thể từ https đến http. vậy bạn có ý kiến ​​gì về nó không?
Sarfaraj Sipai

5

Hãy chắc chắn System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Nó đã được đặt thành yes, và gây ra vấn đề.

Đặt mã dưới đây trong tập tin .htaccess.

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

4

Tôi nghĩ cách dễ nhất là thay đổi url cơ sở không bảo mật thành https vì magento sau đó chuyển hướng tất cả các yêu cầu "không bảo mật" sang url này và cũng tạo các liên kết với url này.

bạn có thể thay đổi url cơ sở trong hệ thống -> cấu hình -> chung -> web


Cảm ơn bạn đã phát lại .. tôi đã làm điều đó nhưng bây giờ nếu bạn mở liên kết này: www.trendy-mode.nl/damesschoenen/slippers nó sẽ đưa bạn đến trang chủ. có giải pháp nào không?
Abhishek Kumbhani

hm đó là lạ :) Bạn có phiền dấu gạch chéo trong url cơ sở không? Tôi nghĩ vấn đề này thực sự thú vị vì rất có thể seo ong có liên quan trong tương lai (hoặc có thể là bây giờ?) Để có toàn bộ trang sử dụng https. Tôi có thể hỏi đồng nghiệp của mình vào ngày mai vì anh ta đã làm điều này cho một cửa hàng magento rồi
David Verholen 20/03/2016

mặc dù giải pháp fschmengler của nên làm việc Tôi nghĩ rằng, câu trả lời của @ Michael có vẻ như đúng cách để làm điều này nếu nó hoạt động
David Verholen

Câu trả lời của fschmenglers không sai. Tôi chỉ thấy khó chịu về chiến lược cập nhật Magentos khi nó chạm vào .htaccess và index.php chứ không phải local.xml. Vì vậy, đó là thêm 'cập nhật lưu' imho
Michael

2

Các tài liệu Apache khuyên không nên sử dụng viết lại:

Để chuyển hướng httpURL đến https, hãy làm như sau:

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

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

Đoạn mã này sẽ đi vào tệp cấu hình máy chủ chính, không phải vào .htaccesscâu hỏi trong câu hỏi.

Bài viết này có thể đã được đưa ra chỉ sau khi câu hỏi được hỏi và trả lời, nhưng dường như là cách hiện tại để đi.


0

Thêm mã này vào đầu tệp .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]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.