Score:1

ห้ามทุกอย่างยกเว้นสคริปต์ที่อยู่ในโฟลเดอร์ย่อย

ธง gr

ฉันต้องการห้ามทุกอย่างที่มาจากโดเมนเฉพาะ (เช่น ตัวอย่าง.คอม) ยกเว้นบางจุดเข้าใช้งาน (ในที่นี้คือไฟล์ PHP) ที่อยู่บนเส้นทางเฉพาะ (เช่น example.com/subfolder1/subfolder2/script.php).

นี่คือส่วนย่อยของการกำหนดค่าที่ฉันใช้ภายในโฮสต์เสมือนสำหรับโดเมนเฉพาะนี้ ฉันยังคงได้รับ 403 สำหรับทุกสิ่ง

สำหรับบริบท ฉันใช้ Apache 2.4.41 + FPM 7.2

<VirtualHost *:443>
  ServerName example.com
  DocumentRoot /my/path
  <Directory /my/path>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/subfolder1/subfolder2$
    RewriteRule . - [F,L]
  </Directory>
</VirtualHost>
Score:0
ธง kz
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 เว้นแต่คุณจะมีข้อกำหนดอื่น

gr flag
ขอบคุณมาก ! ฉันจะไม่คิดเกี่ยวกับทางออกสุดท้ายของคุณได้อย่างไร ? ง่ายมาก :D
kz flag
@alxsbn เนื่องจากคุณพูดถึง "โฟลเดอร์ย่อย**s**" จึงไม่ชัดเจนว่าโซลูชันสุดท้ายจะทำงานนอกตัวอย่างที่จำกัดของคุณหรือไม่ แม้ว่าคุณจะสามารถใช้ ` ได้ตลอดเวลา` และ regex หากคุณมีโฟลเดอร์ย่อยหลายโฟลเดอร์

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา