ฉันใช้รหัสต่อไปนี้เพื่อนำคำร้องขอ www ทั้งหมดไปยัง URL ที่ไม่ใช่ www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
สิ่งนี้ใช้งานได้ดีในไฟล์. htaccess ในรูทของเว็บไซต์ของฉัน
ตัวอย่างเช่น
www.example.com -> example.com/
www.example.com/ -> example.com/
www.example.com/other_page -> example.com/other_page
อย่างไรก็ตามหากฉันย้ายรหัสเดียวกันนี้ไปยังการกำหนดค่า VirtualHost ของฉัน URL ที่เขียนใหม่จะมีเครื่องหมายทับสองด้าน
www.example.com -> example.com//
www.example.com/ -> example.com //
www.example.com/other_page -> example.com//other_page
ฉันแก้ไขได้โดยลบเครื่องหมายทับจากกฎการเขียนซ้ำ:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://example.com$1 [R=301,L]
แต่ฉันไม่เข้าใจเหตุผลนี้ ใครรู้ว่าทำไม