วิธี Redirect Http non-www ให้เป็น Https www ด้วย htaccess สำหรับ Opencart 2+

วิธี Redirect Http non-www ให้เป็น Https www ด้วย htaccess สำหรับ Opencart 2+

เปิดไฟล์ .httaccess เพื่อทำการแก้ไข (ก่อนทำวิธีการนี้ ให้เปลี่ยน htaccess.txt เป็น .htaccess ก่อน) โดยวาง code ด้านล่างนี้ในบรรทัดต่อจาก RewriteBase /

RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [L,R=301] 

Note: ให้ทำการเปลี่ยน yourdomain.com เป็นโดเมนของเรา ยกตัวอย่างโดเมนของผมเป็น iameve.me ดังนั้น code ของผมจะต้องเป็นดังตัวอย่างต่อไปนี้

RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^(.*)$ https://www.iameve.me/$1 [L,R=301]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.iameve.me/$1 [L,R=301] 

จากนั้นให้ทำการ save ไฟล์ .htaccess ของเรา เสร็จแล้วลองเข้าเว็บไซต์ดู จะได้ดังรูปนี้ครับ

****เพิ่มเติม****

สำหรับใครที่แก้ไข .httaccess แล้วแต่ยังไม่เป็น https ให้เพิ่มเติมตามนี้ครับ

ให้เปิดไฟล์ /system/library/url.php ขึ้นมาเพื่อทำการแก้ไข แล้วหา code ส่วนนี้

public function link($route, $args = '', $secure = false) {
    if ($this->ssl && $secure) {
        $url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
    } else {
        $url = 'http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
    }
    ...
}

แล้วแก้ไขใหม่ให้เป็นดังนี้

public function link($route, $args = '', $secure = true) {
    if ($this->ssl && $secure) {
        $url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
    } else {
        $url = 'https://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['SCRIPT_NAME']), '/.\') . '/index.php?route=' . $route;
    }
    ...
}

ที่สำคัญอย่าลืมตรวจสอบให้แน่ใจว่าได้อัปเดต config.php และ admin/config.php ให้ชี้ไปที่ https ทั้งหมดเรียบร้อยแล้ว

Leave a Reply

iameveme