หากไซต์ของคุณให้บริการหน้าเว็บไซต์ที่ปลอดภัยผ่านโปรโตคอล HTTPS (เช่น ผ่าน SSL/TLS) คุณอาจต้องใช้เทคนิคในการเปลี่ยนเส้นทางคำขอ HTTP ทั้งหมดไปยัง HTTPS จากนั้น เพื่อดำเนินการต่อไปด้วยความพยายามในการทำให้เป็นมาตรฐาน คุณอาจต้องการเปลี่ยนเส้นทางคำขอ www ทั้งหมดไปยังที่ไม่ใช่ www (หรือกลับกัน) เทคนิคทั้งสองนี้จำเป็นสำหรับการแสดงหน้าเว็บไซต์เวอร์ชันมาตรฐานของคุณ ดังนั้นทำไมไม่รวมเข้าด้วยกัน เป็น .htaccess ส่วนเดียวที่เรียบง่าย อ่านต่อเพื่อเรียนรู้วิธีการ
เปลี่ยนเส้นทางไปที่ https และไม่ใช่ www
หากต้องการเปลี่ยนเส้นทางคำขอทั้งหมดไปที่ 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
มีให้ หรือไม่? - ตรวจสอบว่า HTTPS ปิดอยู่หรือมีคำขอรวมอยู่ด้วย
www
- หากตรงตามเงื่อนไขข้อใดข้อหนึ่ง คำขอจะผ่านเกณฑ์และเปลี่ยนเส้นทางไปยัง
https/non-www
ที่อยู่
เมื่อวางในรูท .htaccess เทคนิคนี้จะครอบคลุม คำขอ ทั้งหมดโดยจัดเตรียม https/non-www ให้เป็นรูปแบบบัญญัติที่สมบูรณ์สำหรับไซต์ของคุณ อย่าลืมแทนที่ทั้งสองอินสแตนซ์ example.com
ด้วยชื่อโดเมนของคุณเอง
หมายเหตุ:หากไซต์ของคุณมีปัญหาหน้าซ้ำกันเนื่องจากถูก index.php
ผนวกเข้ากับ URL ที่ร้องขอ โปรดดูโพสต์นี้ที่ WP-Mix.com ซึ่งจะอธิบายวิธีลบ www และ index.php ออกจาก URL
เปลี่ยนเส้นทางไปที่ https และ www
เทคนิค .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
ตั้งค่าตัวแปรเป็นปิด คำขอจะเปลี่ยนเส้นทางไปที่ https (ดูหมายเหตุด้านล่างหากใช้พร็อกซี) - สองบรรทัดที่สองเปลี่ยนเส้นทางไปที่ www หากคำขอ / โฮสต์ไม่ได้ขึ้นต้นด้วย
www.
คำขอจะถูกเปลี่ยนเส้นทางไปที่ www
เมื่อวางในรูท .htaccess เทคนิคนี้จะครอบคลุม คำขอ ทั้งหมดโดยจัดเตรียม https/www ให้เป็นรูปแบบบัญญัติที่สมบูรณ์สำหรับไซต์ของคุณ ไม่จำเป็นต้องมีการแก้ไขด้วยโค้ดนี้ มันเป็น Plug-and-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>