เทคนิค RewriteCond และ RewriteRule สำหรับ.htaccess

เว็บเซิร์ฟเวอร์ Apache มีโมดูลเรียกว่า "mod_rewrite". จะช่วยให้การเปลี่ยนเส้นทาง และการปรับเปลี่ยน URL ร้องขอ. ด้านล่างคือบางส่วนของการปรับเปลี่ยนและเปลี่ยนเส้นทางที่สามารถดำเนินการนิยมมากที่สุด. ใส่คำสั่งเหล่านี้ในแฟ้ม ".htaccess" ในรากของเว็บไซต์เอกสาร. ลำดับของความนิยม:

#1. เปลี่ยนเส้นทางทุกโดเมนย่อยที่ www

มี หรือไม่ มี "www" ไม่กล่าวคำถามยากพิจารณาว่า คุณสามารถตอบทั้งสอง และเปลี่ยนเส้นทาง. ตัวอย่างนี้, ซึ่งสามารถรวมกับก่อนหน้านี้, เปลี่ยนเส้นทางคำขอทั้งหมดไม่ใช่ www ไป www subdomain:

<IfModule mod_rewrite.c>
 RewriteEngine บน RewriteCond %{HTTP_HOST } ! ^ www. [NC]  RewriteRule ^(.*)$ http://www.% {HTTP_HOST } / $1 [R = 301, L]
</IfModule>

มีเว็บไซต์ของคุณบนโดเมนย่อย "www" อาจเป็นประโยชน์เมื่อทำงานกับบริการ CDN หรือความปลอดภัย.

#2. นำทุกอย่างไปยัง HTTPS

มีเหตุผลใด ๆ ไม่มีการรันเว็บไซต์ผ่าน SSL (HTTPS). นอกจากนี้ยัง เป็นเรื่องสำคัญมากที่คุณตอบ HTTP และ HTTPS. ตัวอย่างนี้เปลี่ยนเส้นทางการจราจรทั้งหมดไม่ใช่ HTTPS เพื่อ HTTPS:

<IfModule mod_rewrite.c>
 RewriteEngine บน RewriteCond %{HTTPS } ! บน [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R = 301, L]
</IfModule>

จำเป็นต้องเลือกหนึ่งจริง (มาตรฐาน) URL SEO เหตุผล.

#3. ไฟล์ PHP เพื่อจัดการการร้องขอไม่คงที่ทั้งหมด

เรียกว่ารูปแบบควบคุมด้านหน้า. กลไกนี้เป็นพื้นฐานสำหรับกรอบงานของเว็บใด ๆ. ใน PHP จะช่วยให้คุณอ่านเส้นทางร้องขอแท้จริงในตัวแปร $_SERVER ['REQUEST_URI'] ทั่วโลก. การเขียนมีลักษณะดังนี้:

<IfModule mod_rewrite.c>
 RewriteEngine บน RewriteCond %{REQUEST_FILENAME } ! -d RewriteCond %{REQUEST_FILENAME } ! -f RewriteRule ^(.*)$ index.php [QSA, L]
</IfModule>

หมายเหตุว่า ไฟล์ PHP เป็น bypassed สำหรับแฟ้มที่มีอยู่ (เนื้อหาคงที่).

#4. เขียนรับพารามิเตอร์เป็นส่วนหนึ่งของ URL

ถ้าคุณมี URL ที่คุณควรจะเรียก "รับ /orders ? id = 13 " และคุณต้องการตอบว่า เรียก "/orders/13 รับ", คุณอาจใช้ต่อไปนี้:

<IfModule mod_rewrite.c>
 RewriteEngine บน RewriteCond %{REQUEST_URI } ^ / ใบสั่งซื้อ RewriteCond [NC] %{QUERY_STRING } ^ id=([0-9]+)$ [NC] RewriteRule ^(.*)$ /$1/%1\? [R, L]
</IfModule>

นี้มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อย้าย URL แบบแผนและต้องการสนับสนุนดั้งเดิม. หมายเหตุวิธีเครื่องหมายคำถามหนีในตอนท้ายของ "RewriteRule" เอาพารามิเตอร์ที่ได้รับ.

 

ทิ้งคำตอบไว้