เปลี่ยนเส้นทาง http: // ทั้งหมดไปที่ https: //


22

ก่อนหน้านี้ฉันได้โพสต์คำถามนี้: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magentoแต่ไม่ได้รับปฏิกิริยาใด ๆ

นี่คือ URL เว็บไซต์ของฉัน: www.trendy-mode.nl มันจะนำคุณไปที่: https://www.trendy-mode.nl/

ตอนนี้ปัญหาคือลิงก์เมนูหรือลิงก์ย่อยอื่น ๆ ไม่ได้เปลี่ยนเส้นทางด้วยhttps://

EX:
มีเมนูเช่น - NIEUW | KLEDING | โรงเรียน ACCESSOIRES เป็นต้น
หากคุณคลิกที่เมนู NIEUW หน้าใหม่จะเปิดขึ้น แต่จะไม่เปลี่ยนเส้นทางhttps://

ฉันได้ลอง. htaccess tweaks มาก แต่ไม่ได้ผล ใครที่นี่เพื่อช่วยฉันในเรื่องนี้?

ขอบคุณล่วงหน้า!

คำตอบ:


30

การเปลี่ยน URL ฐานที่ไม่ปลอดภัยเป็น https จะเปลี่ยนลิงก์ทั้งหมดและเปลี่ยนเส้นทางคำขอที่ไม่ใช่ https ไปที่https://example.com/ (หน้าแรก) เพราะนั่นคือสิ่งที่ Magento ทำเมื่อการตรวจสอบ URL หลักล้มเหลว

ดังนั้นนี่เป็นการเริ่มต้นที่ดี แต่ยังเปลี่ยนเส้นทางhttp://example.com/foo/ไปยังhttps://example.com/foo/ ด้วยคุณต้องดำเนินการผ่านการเปลี่ยนเส้นทางเว็บเซิร์ฟเวอร์

ตัวอย่างเช่นเพิ่มรหัสต่อไปนี้ที่ด้านบนของคุณ.htaccess:

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

หรือถ้าคุณใช้ reverse proxy เช่น Varnish:

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

นี่เป็นเพราะคำขอจาก Varnish เป็น Magento จะไม่มี SSL (HTTP) แต่ Varnish จะตั้งค่าส่วนหัว X-Forwarded-Proto เป็น "https" หากคำขอต้นฉบับถูกสร้างขึ้นด้วย SSL (HTTPS)


@Abhishek ฉันเพิ่งทดสอบเว็บไซต์ของคุณและเนื่องจากมันยังไม่ทำงาน - คำแนะนำของ Fabians นั้นถูกต้อง .. แต่ก็ควรจะบอกว่า 2 บรรทัดเหล่านี้ควรเพิ่มลงในไฟล์. htaccess ในรากของการติดตั้ง magento ของคุณ แต่ไม่ใช่ที่ด้านบนสุด (โดยทั่วไป ) แต่ตามที่ระบุไว้ด้านล่างหลังจากRewriteEngine Onนั้น วิธีที่ฉันทำมันแตกต่างกันเล็กน้อยในบรรทัดที่สองที่ฉันอ่าน RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup

มีใครเคยได้รับผลกระทบจากการจัดอันดับหน้า google หลังจากย้ายเว็บไซต์คุณภาพเยี่ยมไปยัง https สมบูรณ์หรือไม่
paj

10

เพื่อความสมบูรณ์เรายังทำสิ่งที่คล้ายกันมากกับสิ่งที่ fschmengler ได้แนะนำด้วยการเพิ่มเติมบางอย่าง

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

เราวางสิ่งนี้ไว้ในส่วนของ. htaccess ด้านล่าง RewriteEngine On


9

ตั้งค่า URL ฐานของคุณเพื่อความปลอดภัยและไม่ปลอดภัยในแบ็กเอนด์ ตั้งค่าเป็นใช่เมื่อใช้ url ที่ปลอดภัยในส่วนหน้าในส่วนหลัง

จากนั้นแก้ไขแอปของคุณ / etc / local.xml และรวมถึงสิ่งนี้

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

หรืออย่างน้อยก็วางส่วนหน้าต้นไม้ XML และลดลงระหว่างแท็กการกำหนดค่า


นี่เป็นการแก้ไขปัญหาของฉัน ฉันตั้งทุกอย่างถูกต้องแล้ว แต่ URL บางอันยังใช้ http แทน https
mutiemule

ฉันต้องการเปลี่ยน URL ของ specif จาก https เป็น http คุณมีความคิดเกี่ยวกับมันหรือไม่?
Sarfaraj Sipai

5

System > Configuration > Web > url_options > "Auto-redirect to Base URL = No"ตรวจสอบให้แน่ใจ มันถูกตั้งค่าเป็นyesและทำให้เกิดปัญหา

ใส่รหัสด้านล่างในไฟล์. htaccess

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

4

ฉันคิดว่าวิธีที่ง่ายที่สุดคือเปลี่ยน URL พื้นฐานที่ไม่ปลอดภัยเป็น https เนื่องจาก magento เปลี่ยนเส้นทางคำขอ "ไม่ปลอดภัย" ทั้งหมดไปยัง URL นี้และสร้างลิงก์ด้วย URL นี้

คุณสามารถเปลี่ยน URL พื้นฐานภายใต้ระบบ -> การกำหนดค่า -> ทั่วไป -> เว็บ


ขอบคุณสำหรับการเล่นซ้ำของคุณ .. ฉันทำไปแล้ว แต่ตอนนี้ถ้าคุณเปิดลิงค์นี้: www.trendy-mode.nl/damesschoenen/slippers มันจะข้ามคุณไปที่หน้าแรก มีทางออกใดบ้าง?
Abhishek Kumbhani

อืมมันแปลก ๆ :) คุณคิดว่าจะใช้เครื่องหมายทับท้ายใน url ฐานหรือไม่? ฉันคิดว่าเรื่องนี้น่าสนใจจริง ๆ เพราะเป็นไปได้ว่า seo beeing น่าจะเกี่ยวข้องในอนาคต ฉันสามารถถามเพื่อนร่วมงานของฉันได้ในวันพรุ่งนี้เพราะเขาทำสิ่งนี้กับร้านวีโอไอพีมาแล้ว
David Verholen

แม้ว่าวิธีการแก้ปัญหาของ fschmengler ควรใช้งานได้ฉันคิดว่าคำตอบของ @Michael ดูเหมือนจะเป็นวิธีที่ถูกต้องถ้ามันใช้งานได้
David Verholen

คำตอบที่ดีไม่ใช่คำเท็จ ฉันแค่รำคาญกับกลยุทธ์การอัปเดตของ Magentos เพราะมันแตะ. htaccess และ index.php แต่ไม่ใช่ local.xml ดังนั้นจึงเป็น 'update save' มากกว่า imho
Michael

2

เอกสาร Apacheแนะนำต่อโดยใช้เขียนใหม่:

หากต้องการเปลี่ยนเส้นทางhttpURL ไปที่ให้httpsทำดังต่อไปนี้:

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

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

ข้อมูลโค้ดนี้ควรเข้าสู่ไฟล์กำหนดค่าเซิร์ฟเวอร์หลักไม่ใช่เข้ามาใน.htaccessขณะที่ถามในคำถาม

บทความนี้อาจเกิดขึ้นหลังจากถามคำถามแล้วตอบ แต่ดูเหมือนจะเป็นวิธีปัจจุบันในการไป


0

เพิ่มรหัสนี้ที่ด้านบนของไฟล์. 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]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.