TL; DR
ใช่มันเป็นวิธีที่ถูกต้อง
แต่จะมีความหมายมากขึ้น: ใช่มันเป็นวิธีที่ถูกต้องในการอนุญาตให้.htaccessแทนที่คำสั่งทั้งหมดใน/var/wwwไดเรกทอรี
ตามที่คุณค้นพบAllowOverrideจะได้รับอนุญาตเฉพาะภายใต้Directoryส่วน
ใช้ตัวอย่างของคุณ:
<Directory "/var/www">
AllowOverride All
</Directory>
นี่คือการบอก apache ว่าการกำหนดค่าทั้งหมดสามารถถูกแทนที่ใน/var/wwwและไดเรกทอรีย่อยทั้งหมด (ซ้ำ)
สำหรับตัวอย่างที่ดีกว่าให้พิจารณาว่าคุณมีการกำหนดค่าต่อไปนี้ในโฮสต์เสมือนของคุณ:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
และโครงสร้างไดเรกทอรีต่อไปนี้:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
สิ่งที่ฉันทำที่นี่สร้าง.htaccessในทุกไดเรกทอรีย่อยของ/var/wwwไดเรกทอรี
มันมักจะไม่เป็นเช่นนั้น แต่นี่เป็นเพียงเพื่อประโยชน์ของตัวอย่าง
การเปรียบเทียบโครงสร้างไดเรกทอรีกับการกำหนดค่าหมายความว่า.htaccessไฟล์ทั้งหมดที่อยู่ใน/var/wwwโฟลเดอร์และไดเรกทอรีย่อยไม่รวม/var/www/uploadsไดเรกทอรีและไดเรกทอรีย่อยสามารถแทนที่คำสั่งทุกชนิดได้
แต่/var/www/uploadsและไดเรกทอรีย่อยสามารถใช้.htaccessไฟล์เพื่อแทนที่Allow, DenyและOrderคำสั่งเท่านั้น
หมายเหตุ: ในฐานะของ Apache 2.4 (ซึ่งสามารถใช้ได้โดยเริ่มต้นใน 13.10+) Allow, Denyและคำสั่งถูกแทนที่ด้วยคำสั่งเดียวชื่อOrderRequire