ฉันเพิ่งแปลเว็บไซต์ของฉัน ด้วยเหตุผล SEO (เพื่อหลีกเลี่ยงเนื้อหาที่ซ้ำกัน) ฉันต้องการให้ทุก URL มีภาษาอยู่ในนั้น ตัวอย่างเช่น www.racebooking.net/page.php
จะต้องกลายเป็น www.racebooking.net/en/page.php
จากนั้นส่วน /en/
จะถูกแปลงเป็น ?lang=en
นอกจากนี้ ผู้ใช้จะต้องมีความเป็นไปได้ที่จะเลือกภาษาที่ต้องการเมื่อเรียกดูเว็บไซต์
ตรรกะที่ฉันพยายามใช้มีดังต่อไปนี้:
- หาก URL คือ
racebooking.net/en/page.html
เพียงไปที่page.html?lang=en
ไม่ว่าเบราว์เซอร์ของฉันจะเป็นภาษาใดก็ตาม - หาก URL คือ
racebooking.net/it/page.html
เพียงไปที่page.html?lang=it
ไม่ว่าเบราว์เซอร์ของฉันจะเป็นภาษาใดก็ตาม - หาก URL คือ
racebooking.net/page.html
ให้ตรวจสอบภาษาของเบราว์เซอร์ หากเป็นภาษาอิตาลี ให้แปลง URL เป็นracebooking.net/it/page.html
และไปที่page.html?lang=it
หรือในกรณีอื่นๆ ให้แปลง URL เป็นracebooking.net/en/page.html
และไปที่page.html?lang=en
ฉันเขียน htaccess นี้
RewriteCond %{THE_REQUEST} !^[A-Z]{3,}\s/[en|it]{1,1}/(.*)$ [NC]
RewriteCond %{HTTP:Accept-Language} ^it [NC]
RewriteRule ^$ /it/%1 [L,QSA,NC]
RewriteCond %{THE_REQUEST} !^[A-Z]{3,}\s/[en|it]{1,1}/(.*)$ [NC]
RewriteRule ^$ /en/%1 [L,QSA,NC]
แต่ไม่มีอะไรเกิดขึ้น...แต่ตรวจไม่พบว่า /en/
หรือ /it/
หายไป! ดูเหมือนว่า RewriteCond แรกจะไม่เกิดขึ้น...
อีกทั้งดูเหมือนว่าจะขัดแย้งกับกฎข้อนี้ด้วย
RewriteRule ^(en|it)\/(.*)$ $2\?lang=$1 [L,QSA,NC]
มีความคิดอะไรบ้าง?
แก้ไข หลังจากพูดคุยกันมานาน @anubhava ก็แก้ไขปัญหาได้! วิธีแก้ปัญหาของเขาทำงานได้อย่างสมบูรณ์แบบ ดังนั้นฉันจึงแก้ไขคำถามเพื่อให้เป็นประโยชน์สำหรับผู้เยี่ยมชมมากขึ้น