คำอธิบาย: ควบคุมว่าโฮสต์ใดสามารถเข้าถึงพื้นที่ของเซิร์ฟเวอร์ได้ ไวยากรณ์: อนุญาตจากทั้งหมด|โฮสต์|env=env-variable [host|env=env-variable] ...
บริบท: ไดเรกทอรี .htaccess
ความครอบคลุม: ขีดจำกัด
สถานะ: ฐาน
โมดูล: mod_access
คำสั่งอนุญาตจะส่งผลต่อโฮสต์ที่สามารถเข้าถึงพื้นที่ของเซิร์ฟเวอร์ สามารถควบคุมการเข้าถึงได้โดยใช้คุณลักษณะคำขอของไคลเอ็นต์ที่บันทึกไว้ในชื่อโฮสต์ ที่อยู่ IP ช่วงที่อยู่ IP หรือตัวแปรสภาพแวดล้อมอื่นๆ
พารามิเตอร์แรกของคำสั่งนี้มาจากเสมอ พารามิเตอร์ที่ตามมาอาจมีรูปแบบที่แตกต่างกันสามรูปแบบ หากระบุอนุญาตจากทั้งหมด โฮสต์ทั้งหมดจะได้รับอนุญาตให้เข้าถึง โดยต้องมีการกำหนดค่าคำสั่งปฏิเสธและคำสั่งตามที่อธิบายด้านล่าง หากต้องการอนุญาตให้เฉพาะชุดย่อยของโฮสต์หรือกลุ่มโฮสต์เข้าถึงเซิร์ฟเวอร์ คุณสามารถระบุโฮสต์ในรูปแบบใดก็ได้ต่อไปนี้:
ชื่อโดเมน (บางส่วน)
ตัวอย่าง: อนุญาตจาก apache.org
อนุญาตให้เข้าถึงโฮสต์ที่มีชื่อตรงกันหรือลงท้ายด้วยสตริงที่กำหนด จับคู่เฉพาะส่วนประกอบชื่อเต็มเท่านั้น ดังนั้นตัวอย่างข้างต้นจะจับคู่ foo.apache.org แต่ไม่จับคู่ fooapache.org การกำหนดค่าดังกล่าวจะทำให้เซิร์ฟเวอร์ดำเนินการค้นหาชื่อโดเมนแบบย้อนกลับบนที่อยู่ IP ของลูกค้า ไม่ว่าคำสั่ง HostnameLookups จะตั้งค่าที่อยู่ IP ที่สมบูรณ์หรือไม่ก็ตาม ตัวอย่าง: อนุญาตจาก 10.1.2.3
อนุญาตการเข้าถึงจากที่อยู่ IP เดียวของโฮสต์เดียว
ตัวอย่างที่อยู่ IP บางส่วน: อนุญาตจาก 10.1.1
1 ถึง 3 ไบต์แรกของที่อยู่ IP ใช้สำหรับข้อจำกัดเครือข่ายย่อย
ตัวอย่างคู่เครือข่าย/มาสก์: อนุญาตตั้งแต่ 10.1.0.0/255.255.0.0
เครือข่าย abcd และมาสก์ wxyz สำหรับข้อจำกัดซับเน็ตที่แม่นยำยิ่งขึ้น
เครือข่าย/nnn ไม่มีตัวอย่างข้อกำหนดการกำหนดเส้นทางภายในพื้นที่: อนุญาตตั้งแต่ 10.1.0.0/16
คล้ายกับกรณีก่อนหน้านี้ ยกเว้นตัวพรางประกอบด้วยไบต์ที่มีลำดับสูงnnn
โปรดทราบว่าสามตัวอย่างสุดท้ายด้านบนตรงกับชุดโฮสต์เดียวกันทุกประการ
ที่อยู่ IPv6 และเครือข่ายย่อย IPv6 สามารถระบุได้ดังนี้:
อนุญาตจาก fe80::a00:20ff:fea7:ccea
อนุญาตจาก fe80::a00:20ff:fea7:ccea/10
รูปแบบพารามิเตอร์ที่สามของคำสั่ง Allow ช่วยให้สามารถเข้าถึงเซิร์ฟเวอร์ที่ระบุโดยส่วนขยายของตัวแปรสภาพแวดล้อม เมื่อระบุอนุญาตจาก env=env-variable การร้องขอการเข้าถึงจะได้รับอนุญาตหากมีตัวแปรสภาพแวดล้อม env-variable อยู่ การใช้คำสั่งที่ได้รับจาก mod_setenvif เซิร์ฟเวอร์จะให้ความสามารถในการตั้งค่าตัวแปรสภาพแวดล้อมในลักษณะที่ยืดหยุ่นตามคำขอของลูกค้า ดังนั้น คำสั่งนี้สามารถใช้เพื่ออนุญาตการเข้าถึงตามฟิลด์ต่างๆ เช่น User-Agent (ประเภทเบราว์เซอร์) ผู้อ้างอิง หรือฟิลด์ส่วนหัวคำขอ HTTP อื่นๆ
ตัวอย่าง:
SetEnvIf ตัวแทนผู้ใช้ ^KnockKnock/2.0 let_me_in
<ไดเรกทอรี /docroot>
คำสั่งปฏิเสธอนุญาต
ปฏิเสธจากทั้งหมด
อนุญาตจาก env=let_me_in
</ไดเร็กทอรี>
ในกรณีนี้ เบราว์เซอร์ที่ส่งตัวระบุ User-agent ที่ขึ้นต้นด้วย KnockKnock/2.0 จะได้รับอนุญาตให้เข้าถึงได้ ในขณะที่เบราว์เซอร์อื่นๆ ทั้งหมดจะถูกบล็อก
คำอธิบายคำสั่งปฏิเสธ: ควบคุมว่าโฮสต์ใดถูกห้ามไม่ให้เข้าถึงเซิร์ฟเวอร์ ไวยากรณ์: ปฏิเสธจากทั้งหมด|host|env=env-variable [host|env=env-variable] ...
บริบท: ไดเรกทอรี .htaccess
ความครอบคลุม: ขีดจำกัด
สถานะ: ฐาน
โมดูล: mod_access
คำสั่งนี้อนุญาตให้จำกัดการเข้าถึงเซิร์ฟเวอร์ตามชื่อโฮสต์ ที่อยู่ IP หรือตัวแปรสภาพแวดล้อม การตั้งค่าพารามิเตอร์ของคำสั่ง Deny จะเหมือนกับการตั้งค่าพารามิเตอร์ของคำสั่ง Allow ทุกประการ
คำอธิบายคำสั่งคำสั่งซื้อ: ควบคุมสถานะการเข้าถึงเริ่มต้นและลำดับการประเมินคำสั่งอนุญาตและปฏิเสธ
ไวยากรณ์: การสั่งซื้อ
ค่าเริ่มต้น: คำสั่งซื้อปฏิเสธ,อนุญาต
บริบท: ไดเรกทอรี .htaccess
ความครอบคลุม: ขีดจำกัด
สถานะ: ฐาน
โมดูล: mod_access
คำสั่ง Order จะควบคุมสถานะการเข้าถึงเริ่มต้นและลำดับในการประเมินคำสั่ง Allow และ Deny การสั่งซื้อเป็นหนึ่งในตัวอย่างต่อไปนี้:
ปฏิเสธอนุญาต
คำแนะนำในการปฏิเสธจะได้รับการประเมินก่อนอนุญาตคำแนะนำ การเข้าถึงทั้งหมดได้รับอนุญาตตามค่าเริ่มต้น ไคลเอ็นต์ใด ๆ ที่ไม่ตรงกับคำสั่ง Deny หรือตรงกับคำสั่ง Allow จะได้รับอนุญาตให้เข้าถึงเซิร์ฟเวอร์
อนุญาต,ปฏิเสธ
คำสั่ง Allow จะได้รับการประเมินก่อนคำสั่ง Deny การเข้าถึงทั้งหมดถูกห้ามโดยค่าเริ่มต้น ไคลเอนต์ใด ๆ ที่ไม่ตรงกับคำสั่งอนุญาตหรือตรงกับคำสั่งปฏิเสธจะถูกห้ามไม่ให้เข้าถึงเซิร์ฟเวอร์
ความล้มเหลวร่วมกัน
เฉพาะโฮสต์ที่ปรากฏในรายการอนุญาตและไม่อยู่ในรายการปฏิเสธเท่านั้นที่ได้รับอนุญาตให้เข้าถึง คำสั่งซื้อนี้มีผลเช่นเดียวกับคำสั่งซื้อ อนุญาต ปฏิเสธ และเลิกใช้งานแล้ว มีการกำหนดค่าใดบ้าง
คำหลักสามารถคั่นด้วยเครื่องหมายจุลภาคเท่านั้น ห้ามมีช่องว่างระหว่างคำหลัก โปรดทราบว่าแต่ละคำสั่ง Allow และ Deny จะได้รับการประเมินในทุกกรณี
ในตัวอย่างด้านล่าง การเข้าถึงจะได้รับอนุญาตสำหรับโฮสต์ทั้งหมดในโดเมน apache.org ในขณะที่การเข้าถึงโฮสต์อื่นๆ จะถูกปฏิเสธ
คำสั่งปฏิเสธอนุญาต
ปฏิเสธจากทั้งหมด
อนุญาตจาก apache.org
ในตัวอย่างต่อไปนี้ อนุญาตให้เข้าถึงโฮสต์ทั้งหมดในโดเมน apache.org ยกเว้นโฮสต์ที่อยู่ในโดเมนย่อย foo.apache.org ซึ่งถูกปฏิเสธการเข้าถึง โฮสต์ทั้งหมดที่ไม่ได้อยู่ในโดเมน apache.org จะไม่ได้รับอนุญาตให้เข้าถึง เนื่องจากสถานะเริ่มต้นคือการปฏิเสธการเข้าถึงเซิร์ฟเวอร์
คำสั่งอนุญาต ปฏิเสธ
อนุญาตจาก apache.org
ปฏิเสธจาก foo.apache.org
ในทางกลับกัน หากคำสั่ง Order ในตัวอย่างก่อนหน้านี้เปลี่ยนเป็น Deny, Allow การเข้าถึงจากโฮสต์ทั้งหมดจะได้รับอนุญาต เนื่องจากไม่ว่าลำดับจริงของคำสั่งในไฟล์การกำหนดค่าจะเป็นอย่างไร คำสั่ง Allow จาก apache.org จะถูกประเมินครั้งสุดท้ายและเขียนทับคำสั่ง Deny from foo.apache.org ก่อนหน้านี้ โฮสต์ทั้งหมดที่ไม่ได้อยู่ในโดเมน apache.org ก็ได้รับอนุญาตให้เข้าถึงได้เช่นกัน เนื่องจากสถานะเริ่มต้นถูกเปลี่ยนเป็นอนุญาต
แม้ว่าจะไม่ได้มาพร้อมกับคำสั่งอนุญาตและปฏิเสธ การมีอยู่ของคำสั่งคำสั่งซื้อจะส่งผลต่อการเข้าถึงบางส่วนของเซิร์ฟเวอร์ นี่เป็นเพราะผลกระทบต่อสถานะการเข้าถึงเริ่มต้น ตัวอย่างเช่น,
<ไดเรกทอรี /www>
คำสั่งอนุญาต ปฏิเสธ
</ไดเร็กทอรี>
การดำเนินการนี้จะปิดการเข้าถึงไดเร็กทอรี /www ทั้งหมด เนื่องจากสถานะเริ่มต้นจะถูกตั้งค่าเป็นปฏิเสธ
คำสั่ง Order ควบคุมการประมวลผลคำแนะนำการเข้าถึงภายในแต่ละส่วนของการกำหนดค่าเซิร์ฟเวอร์เท่านั้น ซึ่งหมายความว่า ตัวอย่างเช่น คำสั่งอนุญาตหรือปฏิเสธที่ปรากฏในส่วน <Location> จะถูกประเมินเสมอหลังจากคำสั่งอนุญาตหรือปฏิเสธปรากฏในส่วน <Directory> หรือไฟล์ .htaccess โดยไม่คำนึงถึงการตั้งค่าในคำสั่ง Order ทำไม. สำหรับรายละเอียดเกี่ยวกับการรวมส่วนการกำหนดค่า โปรดดูวิธีการทำงานของส่วนไดเรกทอรี ตำแหน่ง และไฟล์