เพื่อป้องกันไม่ให้คำสั่ง mod_rewrite ถูกประมวลผลสำหรับคำขอที่อยู่นอกรูทของเอกสาร ให้วางกฎต่อไปนี้ที่ด้านบนสุดของไฟล์:
# ป้องกันการประมวลผลเพิ่มเติมหากคำขออยู่นอกไดเรกทอรีราก
กฎการเขียนซ้ำ / - [L]
โดยทั่วไปข้างต้นระบุว่าสำหรับเส้นทาง URL ที่ร้องขอซึ่งมีเครื่องหมายทับ ให้หยุดที่นี่ (สิ่งนี้จะตรวจจับคำขอที่ลงท้ายด้วยเครื่องหมายทับด้วย - นั่นเป็นปัญหาหรือไม่)
หรือคุณสามารถทำให้ regex บนกฎสองข้อที่มีอยู่มีความเฉพาะเจาะจงมากขึ้น เพื่อให้ใช้ได้กับคำขอในไดเรกทอรีรากเท่านั้น
ตัวอย่างเช่น:
# ใช้กฎกับคำขอในไดเรกทอรีรากเท่านั้น
RewriteCond %{REQUEST_FILENAME} -s [หรือ]
RewriteCond %{REQUEST_FILENAME} -l [หรือ]
RewriteCond %{REQUEST_FILENAME} -d
กฎการเขียนซ้ำ ^[^/]+$ - [L]
RewriteRule ^([^/]*)$ index.php?var=$1 [QSA,L]
เดอะ พี.ที
ไม่จำเป็นต้องตั้งค่าสถานะในกฎข้อแรก และกลุ่มการจับในกฎข้อแรกก็ไม่บังคับเช่นกัน จุดตัวอักษรใน การแทน สตริงไม่จำเป็นต้องใช้เครื่องหมายแบ็กสแลชหนี
หมายเหตุ: สิ่งนี้จะล้มเหลวในการดำเนินการตามคำขอนั้น จบ ด้วยเครื่องหมายทับ
อย่างไรก็ตาม หากกฎเหล่านี้เป็นเพียงกฎข้อเดียวของคุณที่เกี่ยวข้องกับสิ่งนี้ คุณจะไม่ทำเช่นนั้น ความต้องการ กฎสองข้อ มีเพียงข้อเดียวที่จำเป็น โดยถือว่าเป็นเรื่องปกติสำหรับการร้องขอไปยังรูทเอกสารโดยที่ไม่มี the วาร์
พารามิเตอร์ URL ตัวอย่างเช่น:
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?var=$1 [QSA,L]
โปรดทราบว่าตรรกะของ เงื่อนไข กลับกัน
ดังที่กล่าวไว้ คำขอสำหรับไดเร็กทอรีรูทนั้นจะถูกส่งผ่านไปยัง index.php
(โดย mod_dir) ไม่ใช่ index.php?var=
.