RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2$
กฎการเขียนซ้ำ - [เอฟ, แอล]
เนื่องจากจุดยึดท้ายสตริง ($
) อนุญาตเท่านั้น /subfolder1/subfolder2
เป๊ะ (ไม่ /subfolder1/subfolder2/script.php
) และบล็อกทุกอย่างที่เหลือ เนื่องจาก /subfolder1/subfolder2
สันนิษฐานว่าเป็นไดเร็กทอรีที่มีอยู่จริง mod_dir จะเปลี่ยนเส้นทางเพื่อต่อท้ายเครื่องหมายทับซึ่งจะถูกบล็อกโดยกฎนี้ ใช่มันบล็อก ทุกอย่าง.
คุณต้องลบจุดยึดท้ายสตริง ($
) จากจุดสิ้นสุดของ CondPattern. ตัวอย่างเช่น:
RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2
แม้ว่าจะพูดอย่างเคร่งครัดเพื่อหลีกเลี่ยงความขัดแย้งกับสิ่งใดก็ตามที่อาจเริ่มต้นด้วย โฟลเดอร์ย่อย2
(เช่น. โฟลเดอร์ย่อย 2foo.php
) จากนั้นคุณควรใช้ regex เช่น ^/subfolder1/subfolder2($|/)
แทน.
โปรดทราบว่าหากนี่เป็นเส้นทาง URL เดียวที่คุณต้องอนุญาต คุณไม่จำเป็นต้องใช้ เงื่อนไขเนื่องจากควรทำการทดสอบใน เขียนกฎใหม่
คำสั่งโดยตรง ตัวอย่างเช่น:
RewriteRule !^/subfolder1/subfolder2($|/) - [F]
เดอะ แอล
ไม่จำเป็นต้องตั้งค่าสถานะด้วย ฉ
ธง; มันบอกเป็นนัย
หรืออย่าใช้ mod_rewrite เลย ตัวอย่างเช่น:
<Directory /my/path>
Require all denied
</Directory>
<Directory /my/path/subfolder1/subfolder2>
Require all granted
</Directory>
วิธีนี้ดีกว่า mod_rewrite เว้นแต่คุณจะมีข้อกำหนดอื่น