หากไซต์ของคุณให้บริการหน้าเว็บที่ปลอดภัยผ่านโปรโตคอล HTTPS (เช่น ผ่าน SSL/TLS) คุณอาจต้องใช้เทคนิคในการเปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดไปยัง HTTPS จากนั้น เพื่อดำเนินการต่อไปด้วยความพยายามในการทำให้เป็นมาตรฐาน คุณอาจต้องการเปลี่ยนเส้นทางคำขอ www ทั้งหมดไปยังที่ไม่ใช่ www (หรือกลับกัน) เทคนิคทั้งสองนี้จำเป็นสำหรับการแสดงหน้าเว็บเวอร์ชันมาตรฐานของคุณ ดังนั้นทำไมไม่รวมเข้าด้วยกัน เป็น .htaccess ส่วนเดียวที่เรียบง่าย อ่านต่อเพื่อเรียนรู้วิธีการ
หากต้องการเปลี่ยนเส้นทางคำขอทั้งหมดไปที่ https และไม่ใช่ www ให้ใช้รหัสต่อไปนี้แทนรหัสก่อนหน้า :
# Canonical HTTPS/non-WWW
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule (.*) https://example.com/$1 [L,R=301]
</IfModule>
วางโค้ดนี้ในรูท .htaccess ของไซต์ของคุณเช่นเดิม นี่คือสิ่งที่กำลังทำอยู่ :
mod_rewrite
มีให้ หรือไม่www
https/non-www
ที่อยู่เมื่อวางในรูท .htaccess เทคนิคนี้จะครอบคลุม คำขอ ทั้งหมดโดยจัดเตรียม https/non-www ให้เป็นรูปแบบบัญญัติที่สมบูรณ์สำหรับไซต์ของคุณ อย่าลืมแทนที่ทั้งสองอินสแตนซ์example.com
ด้วยชื่อโดเมนของคุณเอง
หมายเหตุ:หากไซต์ของคุณมีปัญหาหน้าซ้ำกันเนื่องจากถูกindex.php
ผนวกเข้ากับ URL ที่ร้องขอ โปรดดูโพสต์นี้ที่ WP-Mix.com ซึ่งจะอธิบายวิธีลบ www และ index.php ออกจาก URL
เทคนิค .htaccess ต่อไปนี้จะเปลี่ยนเส้นทางคำขอที่ผ่านการรับรองไปยัง หน้าเว็บเวอร์ชัน https และ wwwของคุณ เพิ่มไปยังไฟล์ .htaccess รูทของไซต์ของคุณ :
# Canonical https/www
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
HTTPS
ตั้งค่าตัวแปรเป็นปิด คำขอจะเปลี่ยนเส้นทางไปที่ https (ดูหมายเหตุด้านล่างหากใช้พร็อกซี)www.
คำขอจะถูกเปลี่ยนเส้นทางไปที่ wwwเมื่อวางในรูท .htaccess เทคนิคนี้จะครอบคลุม คำขอ ทั้งหมดโดยจัดเตรียม https/www ให้เป็นรูปแบบบัญญัติที่สมบูรณ์สำหรับไซต์ของคุณ ไม่จำเป็นต้องมีการแก้ไขด้วยโค้ดนี้ มันเป็น Plug-n-play ทั้งหมด
ตามที่อธิบายไว้ที่นี่ :
“เมื่ออยู่เบื้องหลังการใช้พร็อกซีบางรูปแบบ โดยไคลเอนต์เชื่อมต่อผ่าน HTTPS กับพร็อกซี ตัวโหลดบาลานเซอร์ แอปพลิเคชัน Passenger เป็นต้น ตัวแปร%{HTTPS}
อาจไม่เคยอยู่on
และทำให้เกิดการวนซ้ำ นี่เป็นเพราะแอปพลิเคชันของคุณรับทราฟฟิก HTTP ธรรมดา แม้ว่าไคลเอนต์และพร็อกซี/โหลดบาลานเซอร์จะใช้ HTTPS ก็ตาม ในกรณีเหล่านี้ ให้ตรวจสอบส่วนX-Forwarded-Proto
หัวแทน%{HTTPS}
ตัวแปร”
ดังนั้นหากคุณใช้บริการพร็อกซีบางประเภทหรือคล้ายกัน ให้เพิ่มบรรทัดต่อไปนี้ในโค้ดด้านบน:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
ดังนั้นผลลัพธ์สุดท้ายจะเป็นดังนี้หากใช้พร็อกซีเซิร์ฟเวอร์:
# Canonical https/www (when using proxy)
<IfModule mod_rewrite.c>
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
https://htaccessbook.com/htaccess-redirect-https-www/